Python3 Selenium自动化web测试 ==> 第二节 页面元素的定位方法 <上>
前置步骤:
上一篇的Python单元测试框架unittest,我认为相当于功能测试测试用例设计中的用例模板,在自动化用例的设计过程中,可以封装一个模板,在新建用例的时候,把需要测试的步骤添加上去即可;
而现在要做的就是学习如何定位页面元素,告诉系统我要找到什么UI元素,然后才能进一步的采取其他措施;
其实不想写这篇内容,可是又觉得如果去官方文档找信息又效率慢,那么我就将常用的步骤归纳,那样可以快速查阅解决问题。
参考英文官方资料:http://selenium-python.readthedocs.io/locating-elements.html
学习目的:
掌握元素的基础定位方法,常用的八种方法。
正式步骤:
step1: 定位一个或者多个页面元素的方法汇总
①定位单个页面元素的方法
- find_element_by_id(使用id)
- find_element_by_name(使用name属性值)
- find_element_by_xpath(使用XPath)
- find_element_by_link_text(使用显示文本)
- find_element_by_partial_link_text(使用超链接文本)
- find_element_by_tag_name(使用标签名)
- find_element_by_class_name(使用类名)
- find_element_by_css_selector(使用CSS选择器)
② 定位一组页面元素的方法,定位成功过后,会以列表的形式返回所有定位到的页面元素
- find_elements_by_name(使用name属性值)
- find_elements_by_xpath(使用XPath)
- find_elements_by_link_text(使用超链接)
- find_elements_by_partial_link_text(使用部分超链接)
- find_elements_by_tag_name(使用标签名)
- find_elements_by_class_name(使用类名)
- find_elements_by_css_selector(使用CSS选择器)
step2: 以单个页面元素的定位方法示例
以百度首页为测试版本,测试浏览器使用chrome浏览器,相应的驱动放到Python的D:\Python36\Scripts目录下,注意驱动的版本要对应selenium版本
- find_element_by_id
from selenium import webdriver
import time url = 'https://www.baidu.com' driver = webdriver.Chrome()
driver.get(url)
driver.find_element_by_id('kw').send_keys('python')
time.sleep(3)
driver.close() - find_element_by_name
from selenium import webdriver
import time url = 'https://www.baidu.com' driver = webdriver.Chrome()
driver.get(url)
driver.find_element_by_name('wd').send_keys('python')
time.sleep(3)
driver.close() - find_element_by_xpath
用chrome浏览器打开百度首页,右键点击搜索框,选择“检查”,或者按F12打开开发者工具,使用chrome浏览器自带的复制xpath工具,来获取xpath
# -*- coding:utf-8 -*- from selenium import webdriver
import time url = 'https://www.baidu.com' driver = webdriver.Chrome()
driver.get(url)
driver.find_element_by_xpath('//*[@id="kw"]').send_keys('python')
time.sleep(3)
driver.close() - find_element_by_css_selector
参考上例,使用开发者工具复制css_selector,需要指出的是,css运行效率比xpath快,但是维护性差,可实际工具中,xpath定位占主导地位,所以优先xpath吧 - find_element_by_link_text
# -*- coding:utf-8 -*- from selenium import webdriver
import time url = 'https://www.baidu.com' driver = webdriver.Chrome()
driver.get(url)
driver.find_element_by_link_text('把百度设为主页').click()
time.sleep(3)
driver.quit() - find_element_by_partial_link_text
# -*- coding:utf-8 -*- from selenium import webdriver
import time url = 'https://www.baidu.com' driver = webdriver.Chrome()
driver.get(url)
driver.find_element_by_partial_link_text('把百度设为').click()
time.sleep(3)
driver.quit() - find_element_by_tag_name
# -*- coding:utf-8 -*- from selenium import webdriver
import time url = 'https://www.baidu.com' driver = webdriver.Chrome()
driver.get(url)
tag = driver.find_element_by_tag_name('title')
if tag:
print('pass')
driver.quit() - find_element_by_class_name
# -*- coding:utf-8 -*- from selenium import webdriver
import time url = 'https://www.baidu.com' driver = webdriver.Chrome()
driver.get(url)
tag = driver.find_element_by_class_name('s_ipt').send_keys('python')
time.sleep(3)
driver.quit()
学习总结:
元素的定位需要自己在实际的工作中总结出常用的定位方法,后续再总结元素的定位方法
Python3 Selenium自动化web测试 ==> 第二节 页面元素的定位方法 <上>的更多相关文章
- Python3 Selenium自动化web测试 ==> 第二节 页面元素的定位方法 -- iframe专题 <下>
学习目的: 掌握iframe矿建的定位,因为前端的iframe框架页面元素信息,大多时候都会带有动态ID,无法重复定位. 场景: 1. iframe切换 查看iframe 切换iframe 多个ifr ...
- Python3 Selenium自动化web测试 ==> 第九节 WebDriver高级应用 -- 操作select 和 alert
学习目的: 掌握页面常规元素的定位方法 场景: 网页正常的select元素下拉框常规方法和select专属方法 正式步骤: step1:常规思路select页面元素定位 处理HTML代码截图 # -* ...
- Python3 Selenium自动化web测试 ==> 第一节 起始点之Python单元测试框架 unittest
前置步骤 Python版本:3.6.4 selenium版本:3.11.0 >>> import selenium >>> help(selenium) IDE:P ...
- Python3 Selenium自动化web测试 ==> 第三节 常用WebDriver API使用示例上(24个API)
前置步骤: 安装selenium,chrome驱动,Python3.6 学习目的: 常见API的使用 涉及的API: step1: 访问一个网址 step2: 网页的前进和后退 step3: 刷新当前 ...
- Python3 Selenium自动化web测试 ==> 第十节 WebDriver高级应用 -- xpath语法
学习目的: xpath定位是针对常规定位方法中,最有效的定位方式. 场景: 页面元素的定位. 正式步骤: step1:常规属性 示例UI 示例UI相关HTML代码 相关代码示例: #通过id定位 dr ...
- Python3 Selenium自动化web测试 ==> 第六节 WebDriver高级应用 -- 操作web页面的滚动条
学习目的: 掌握页面元素定位以外的其他重要知识点. 正式步骤: 测试Python3代码 # -*- coding:utf-8 -*- from selenium import webdriver fr ...
- Python3 Selenium自动化web测试 ==> 第五节 WebDriver高级应用 -- 使用JavaScript操作页面元素
学习目的: 中级水平技术提升 在WebDriver脚本代码中执行JS代码,可以解决某些 .click()方法无法生效等问题 正式步骤: Python3代码如下 # -*- coding:utf-8 - ...
- Python3 Selenium自动化web测试 ==>FAQ:隐式等待和sleep区别
FAQ: 情景1: 设置等待时间 A方法:sleep 线程休眠,但只单次有效,其他操作需要加载等待时间,需要再次添加time.sleep() B方法:implicitly_wait() from se ...
- Python3 Selenium自动化web测试 ==> 第七节 WebDriver高级应用 -- 浮动框中,单击选择某个关键字选项
学习目的: 了解WebDriver的高级应用 正式步骤: 测试Python3代码 # -*- coding:utf-8 -*- from selenium import webdriver from ...
随机推荐
- python OS模块 对操作系统接口调用
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径os.chdir("dirname") 改变当前脚本工作目录:相当于shell下cdos.curdir ...
- BZOJ 1758 / Luogu P4292 [WC2010]重建计划 (分数规划(二分/迭代) + 长链剖分/点分治)
题意 自己看. 分析 求这个平均值的最大值就是分数规划,二分一下就变成了求一条长度在[L,R]内路径的权值和最大.有淀粉质的做法但是我没写,感觉常数会很大.这道题可以用长链剖分做. 先对树长链剖分. ...
- Spring Boot 中application.yml与bootstrap.yml的区别(转)
yml与properties其实yml和properties文件是一样的原理,且一个项目上要么yml或者properties,二选一的存在. 推荐使用yml,更简洁. bootstrap与applic ...
- uniapp在在页面跳转时,若URL太长的字符串会导致数据传递失败
url有长度限制,太长的字符串会传递失败,可使用窗体通信.全局变量,或encodeURIComponent等多种方式解决,如下为encodeURIComponent示例的解决方法. <navig ...
- vue学习时遇到的问题(二)
1. this.$nextTick veu中进行数据改变后,并不会马上刷新视图:用nextTick可告诉执行下个函数后马上刷新视图: this.$nextTick(function(){ // ...
- Mysql入门-对表数据的增删改查
这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mysql的时候, ...
- 最大数maxnumber (HYSBZ 1012)(线段树区间查询和单点修改)(优雅的暴力)
Problem 现在请求你维护一个数列,要求提供以下两种操作:1. 查询操作.语法:Q L 功能:查询当前数列中末尾L 个数中的最大的数,并输出这个数的值.限制:L不超过当前数列的长度.2. 插入操作 ...
- 数据分析-excel数据分析(数据分析师岗位分析)
使用的函数:字符截取函数:LEFT(),MID() 定位函数:FIND() 统计函数:COUNTIF() 1.获取薪资的区间的最小值min和最大值max 处理方法:新插入多列,使用find()定 ...
- SQL事务回滚
BEGIN TRAN标记事务开始 COMMIT TRAN 提交事务 一般把DML语句(select ,delete,update,insert语句)放在BEGIN TRAN...COMMIT TRAN ...
- [题解] [HNOI2014] 世界树
题面 [HNOI2014]世界树 题解 从数据范围很容易看出是个虚树DP(可惜看出来了也还是不会做) 虚树大家应该都会, 不会的话自己去搜吧, 我懒得讲了, 我们在这里只需要考虑如何DP即可 首先我们 ...