selenium+chrome自动化学习完整记录
2020-12-23 18:20:28 0 举报
AI智能生成
selenium+chrome自动化测试教程记录 完成后可使用python完成自动化页面测试 简单易懂
作者其他创作
大纲/内容
selenium
介绍
目前业内最核心的:自动化测试
最为主流的自动化测试技术:selenium
核心是基于js core实现的
1.x时代:IDE时代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>
标签
超链接: img图片
输入框:input
button: 按钮
实际系统中,元素的标签类型不是由表象来决定的通过CSS样式表来决定的
自动化中是基于标签的属性来定位标签
八种元素定位
id
基于元素属性中的id值来进行定位
id类似于人的身份证上的身份证号码,不出意外不会重复
# 基于id定位driver.find_element_by_id(\"id\")
name
基于元素属性中name的值来进行定位
类似于身份证的名字,可能会重名,使用之前需要检查是否重复
# 基于name定位driver.find_element_by_name(\"\")
link text
主要用于超链接进行定位
# 基于link text定位driver.find_element_by_link_text(\"登录\").click()
partial link text
link text的模糊查询版本,类似于数据库中的Like
匹配到多个查询结果,取第一个
# 基于partial link textdriver.find_element_by_partial_link_text(\"首页\").click()driver.find_element_by_partial_link_text(\"首页\").text()
classname
基于元素样式来进行定位,非常容易遇到重复的,类似于人穿的衣服
复杂的会报错,简单的找不到,不推荐使用
# 基于classname定位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
cssselector
应用相对较多的一种行为,最初浏览器不支持xpath,完全基于class属性来实现的定位
# 基于cssselector来定位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不一样
当元素无法定位时,可以通过定位子级元素返回父级
函数写法定位
contains表示进一步查找,匹配项模糊查找
0 条评论
回复 删除
下一页