Selenium3自动化测试【14】元素定位之ID
元素定位
Selenium需要告知其如何去定位元素,来模拟用户动作。例如要操作Bing搜索页。
- 首先要找到搜索框与搜索按钮;
- 通过键盘输入检索的关键字;
- 用鼠标单击搜索按钮;
- 提交搜索请求。
Selenium能够模拟上面描述的动作,但Selenium并不理解如何在搜索框中输入关键字或单击搜索按钮的操作。Selenium需要代码告诉其如何定位搜索框或搜索按钮,从而实现模拟人工的操作。
Selenium提供了多种方法用于定位元素(find_element_by_),其中号代表可变的方法,例如id、name等。
Selenium提供了8种find_element_by_方法用于定位元素。本节我们会分别介绍这些方法,8种find_element_by_方法如下表所示。 - find_element_by_id:通过元素的ID属性值来定位元素;
- find_element_by_name:通过元素的name属性值来定位元素;
- find_element_by_class_name:通过元素的class属性值来定位元素;
- find_element_by_xpath:通过Xpath来定位元素;
- find_element_by_tag_name:通过元素的tag name来定位元素;
- find_element_by_css_selector:通过CSS选择器来定位元素;
- find_element_by_link_text:通过元素标签对之间的文本信息来定位元素;
- find_element_by_partial_link_text:通过元素标签对之间的部分文本信息来定位元素;
ID定位
id(find_element_by_id)是Selenium中较常用的定位方式,因为一般不会存在id重名的元素。
目前大部分技术研发团队的开发方式,都采用的是前后端分离的技术。很多团队在前端代码提交后,在审核代码时,都会检查元素的属性定义,其中id的唯一就是检查的一项。因此find_element_by_id方法是查找页面上元素的最佳方法。
搜索框元素的属性描述HTML代码如下:
<input class="b_searchbox" id="sb_form_q" name="q" title="输入搜索词" type="search" value="" maxlength="100" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" aria-controls="sw_as" aria-autocomplete="both" aria-owns="sw_as">
因此id=“sb_form_q”的定位方法就是find_element_by_id(“sb_form_q”),如图所示。
Selenium通过FireFox浏览器驱动操作输入框的代码如下:
from selenium import webdriver
driver=webdriver.Firefox()
driver.get("https://cn.bing.com/")
driver. find_element_by_id("sb_form_q").send_keys("bella")
driver.quit() # 关闭浏览器
打开PyCharm编译器,创建1个工程,且在该工程下创建一个.py文件(py文件名自己命名即可,如Demo.py),然后将如上代码敲入到创建的py文件中,如图所示。
右键单击选择Run 即可(如 Run ‘Demo’)运行代码,观察到如下操做。
- 打开FireFox浏览器;
- 打开Bing首页;
- 键入Bella;
- 关闭浏览器。
地址:https://ke.qq.com/course/2525707?tuin=9c43f38e
地址:https://51test.ke.qq.com/?tuin=9c43f38e
图书京东、当当有售
京东:https://item.jd.com/12784287.html
当当:http://product.dangdang.com/29177828.html)
Selenium3自动化测试【14】元素定位之ID的更多相关文章
- Web UI自动化测试基础——元素定位(三)
本篇文章整理了元素定位的基础知识——iframe框架中的元素定位. 一.iframe框架元素定位 iframe是Html页面的内联框架,如果在自动化测试中无法定位到某个元素,那么很有可能是因为该元素在 ...
- web自动化测试(java)---元素定位
和python类似,java-selenium也提供了很多种元素定位的方法,具体如下: findElement(By.id()) findElement(By.name()) findElement( ...
- Web UI自动化测试基础——元素定位(二)
本篇文章整理了元素定位的基础知识——多个元素定位方式. 一.多个元素定位方式简介 同单个元素定位方式相同,多个元素定位方式也有与之对应的8种方式,即id.name.class_name.tag_nam ...
- Web UI自动化测试基础——元素定位(一)
本篇文章整理了元素定位的基础知识——单个元素定位方式. 一.单个元素定位方式简介 1. find_element_by_id 通过元素的id属性进行定位.以百度首页为例,首先进入https://www ...
- python3+selenium3自动化1——元素定位
1.selenium的webdriver提供了八种基本的元素定位方法 打开浏览器 driver = webdriver.Chrome() driver.get('https://www.baidu.c ...
- robotframework使用之元素定位动态ID方法
转自: http://blog.csdn.net/u011757108/article/details/53418671 一个弹出框所有元素ID竟然的动态的,关闭后再打开,里面的ID又变! 如下图: ...
- 搭建Python自动化测试环境+元素定位
https://blog.csdn.net/GitChat/article/details/79081187
- 3 Python+Selenium的元素定位方法(id、class name、name、tag name)
[环境] Python3.6+selenium3.0.2+IE11+Win7 [定位方法] 1.通过ID定位 方法:find_element_by_id('xx') 2.通过name定位 方法:fin ...
- python+Appium自动化:id元素定位
元素定位 与web自动化一样,app自动化元素定位也是非常重要的一环,,appium也是提供了很多元素定位的方法,比如:id.name.class.层级定位等等. 元素定位方式 id name cla ...
随机推荐
- SpringBoot(一):使用IDEA快速搭建一个SpringBoot项目(详细)
环境: JDK1.8 Maven:3.5.4 1.打开IDEA,右上角选择File→New→Project 选择Spring Initializr(使用IDEA自带的插件创建需要电脑联网) 2.点 ...
- 破解 Android 上 airpods 连接软件的pro版
0x00 起因 起因是在Android上用了一段时间的AndPods觉得不太好用之后,换到了另一个Play商店推荐的App.动画.连接和电量提示都用的很满意,就是每次连接的弹窗和APP里面都有广告,就 ...
- new String("abc"),到底在不在常量池中存储"abc"?
String str = new String("Hello World"); 问之:这行代码到底有没有在字符串常量池中创建"Hello World"字符串呢? ...
- 剑指 Offer 29. 顺时针打印矩阵 + 蛇形矩阵 + 模拟 + 思维题
剑指 Offer 29. 顺时针打印矩阵 Offer_29 题目描述: 题解分析: 题目的初衷是将这道题当做一个简单题处理 这道题一开始想的太复杂了,其实可以参考迷宫广度优先搜索的过程,只不过在选定一 ...
- POJ-1062(原始dijiksra算法+思维)
昂贵的婚礼 POJ-1062 这道题目一开始看的时候难以理解,但是仔细想,还是可以和最短路联系的,我觉得类似于硬币交换等问题. 以下需要注意几个点,第一就是因为题目规定如何和超出了等级限制的人交易,则 ...
- Python3+pygame实现的90坦克大战 代码完整 有演示效果
我是一个典型的80后,年轻时玩过了特别多的游戏,所以这几天用Python3+pygame实现了一个另外小游戏"坦克大战"(其他的游戏,请翻阅我的博客) 本实例代码量有些多,完整的版 ...
- Spring 的 IOC
1. 什么是IOC IOC的好处 IOC的思想是将需要的对象通过外部传入进来,而不是自己创建.这样的设计方式更加灵活.在Spring中对象之间的依赖关系也是由IOC容器来维护(类与类之间的依赖关系,使 ...
- slickgrid ( nsunleo-slickgrid ) 1 开篇有益
slickgrid (nsunleo-slickgrid) 1 开篇有益 作为专职的程序猿,自认为是老菜鸟或老民工,以前一直在某浪上写博客,上知天文,下达地理.做了N年的.net,又转Java,从 ...
- POJ2635(数论+欧拉筛+大数除法)
题目链接:https://vjudge.net/problem/POJ-2635 题意:给定一个由两个质数积的大数M和一个数L,问大数M的其中较小的质数是否小于L. 题解:因为大数M已经超过long ...
- 使用MyBatis的步骤
1.创建空的Java工程,安装MyBatis依赖 <?xml version="1.0" encoding="UTF-8"?> <projec ...