selenium+chrome自动化学习完整记录
2020-12-23 18:20:28 0 举报
AI智能生成
selenium+chrome自动化测试教程记录 完成后可使用python完成自动化页面测试 简单易懂
作者其他创作
大纲/内容
介绍
目前业内最核心的:自动化测试
最为主流的自动化测试技术:selenium
appium,基于selenium继承实现的
本身是firefox的一个插件,UI操作的录制,可以转换为java,ruby,js语言
chrome浏览器研制出驱动:chromedriver,其他浏览器也相继出现驱动
核心是基于js core实现的
1.x时代:IDE时代
2.x时代:webdriver + IDE时代
3.x时代:webdriver时代
现阶段测试中,只会使用selenium+webdriver来实现自动化测试
2.x时代:webdriver + IDE时代
3.x时代:webdriver时代
现阶段测试中,只会使用selenium+webdriver来实现自动化测试
环境搭建
安装selenium
pip install selenium
pycharm中的interpreter来进行安装
webdriver安装
百度下载安装
下载对应适配浏览器版本(否则可能会导致启动出错):https://chromedriver.chromium.org/downloads
防止浏览器自动更新,导致脚本执行失败
设置浏览器禁用自动更新
设置浏览器禁用自动更新
下载后的webdriver放置在python根目录下(后续可直接调用)
双击chromedriver启动服务(由该服务上传下发基于HTTP协议下的指令)
python+selenium
webdriver + selenium运行原理
简单demo
get原理
selenium下发command指令(get)到webdriver,webdriver服务基于http协议生成操作和响应,封装execute方法,发送指令到浏览器去执行并接收响应
释放资源
等待时间需要添加
八大元素定位法则
元素定位
所有ui层的自动化都是基于元素定位来实现的
所有被操作的元素都是webelement对象
元素=html标签
基本格式
<tagname attribute1="" attribute2>text</tagname>
<tagname attribute1="" attribute2 /tagname>
<tagname attribute1="" attribute2 /tagname>
标签
超链接: img图片
输入框:input
button: 按钮
通用:div,li, span 。。。
实际系统中,元素的标签类型不是由表象来决定的
通过CSS样式表来决定的
通过CSS样式表来决定的
自动化中是基于标签的属性来定位标签
八种元素定位
id
基于元素属性中的id值来进行定位
id类似于人的身份证上的身份证号码,不出意外不会重复
# 基于id定位
driver.find_element_by_id("id")
driver.find_element_by_id("id")
name
基于元素属性中name的值来进行定位
类似于身份证的名字,可能会重名,使用之前需要检查是否重复
# 基于name定位
driver.find_element_by_name("")
driver.find_element_by_name("")
link text
主要用于超链接进行定位
# 基于link text定位
driver.find_element_by_link_text("登录").click()
driver.find_element_by_link_text("登录").click()
partial link text
link text的模糊查询版本,类似于数据库中的Like
匹配到多个查询结果,取第一个
# 基于partial link text
driver.find_element_by_partial_link_text("首页").click()
driver.find_element_by_partial_link_text("首页").text()
driver.find_element_by_partial_link_text("首页").click()
driver.find_element_by_partial_link_text("首页").text()
# 基于partial link text,多个返回值,取第二个
driver.find_elements_by_partial_link_text("首页")[1].click()
driver.find_elements_by_partial_link_text("首页")[1].text()
driver.find_elements_by_partial_link_text("首页")[1].click()
driver.find_elements_by_partial_link_text("首页")[1].text()
classname
基于元素样式来进行定位,非常容易遇到重复的,类似于人穿的衣服
复杂的会报错,简单的找不到,不推荐使用
# 基于classname定位
driver.find_element_by_class_name("").send_keys("123456")
driver.find_element_by_class_name("").send_keys("123456")
tagname
标签名来定位
重复度最高,只有在需要定位后进行二次筛选的情况下使用
# 基于tagname来定位
dr = driver.find_elements_by_tag_name("a")
for d in dr:
if d.text == "登录":
d.click()
break
dr = driver.find_elements_by_tag_name("a")
for d in dr:
if d.text == "登录":
d.click()
break
cssselector
应用相对较多的一种行为,最初浏览器不支持xpath,完全基于class属性来实现的定位
# 基于cssselector来定位
driver.find_element_by_css_selector("")
driver.find_element_by_css_selector("")
xpath
目前应用最多的一种行为,基于页面结构来进行的定位
绝对路径
从html根路径下一层一层往下数,找到对应层级,从而找到元素
不建议这么写
相对路径
基于匹配制度来查找元素,依照xpath语法结构来找
例如://*[@id="kw"]
// 表示从根路径下开始找
* 任意元素
[] 表示筛选条件(查找函数)
@ 表示基于属性来筛选,例如@id=“kw”表示基于id属性值为kw的条件来筛选
确认xpath路径是否正确
在开发者工具element页面使用ctrl+f查找,进行判断
在console中输入$x('xpath路径')进行校验
如果要基于text来定位元素
在[]中添加text()='文本内容'进行查找
value是属性,和text不一样
当元素无法定位时,可以通过定位子级元素返回父级
函数写法定位
//input[contains(@id,"kw")]
//input[contains(text(),"登录")]
contains表示进一步查找,匹配项模糊查找
0 条评论
下一页
为你推荐
查看更多