python元素定位
selenium 工具模拟用户行为,web端的UI层的自动化测试工具。最擅长做的事情就是模拟用户点击,输入内容等等。
引言:
自动化测试模拟用户操作,用户访问一个百度站点,找到搜索框,输入123,点击百度一下这个操作。全程都是用眼睛看的,人有思维;
那么自动化测试不像一样有眼睛去看,自动化测试需求识别HTML页面上的信息---也就是我们所说的元素;所以做自动化测试需要我们首先去定位到我们要找的元素,这样的话呢,我们就不得不学习,前端知识,认识 html 页面,比如我们要知道标签和标签的层级以及什么是元素?什么是元素的属性?
我们以百度首页为例子讲解:(打开百度,按下F12)
1.HTML标签:
<html> 声明html网页
<a>代表的是一个链接 href='https://www.baidu.com'
<title>窗口的标题
<form> 表单 一般存在于登录页面
<div>没名字,是一个块标签,是一个容器标签,里面可以包含不同的标签,比如a,p,div 取决于前端开发人员
<span> 没名字,是一个块标签,是一个文本容器标签,里面一般放文本不同的标签
<p>声明的是一个段落
<input>是一个文本框
<img> 代表的是图像
<iframe>html页面中的一个网页嵌套另一个网页
HTML标签的层级关系:
爷爷类标签 <---- 父类标签 <---- 子类标签 (根据层级的镶嵌状态来判断)
元素定位与写法:
模拟用户点击:click()
模拟用户输入信息:send_keys()
元素定位实例:
在html中link_text指的是什么
a标签是超链接标签,href属性的值是超链接的地址,标签正文link text是超链接文字的内容。
例:<a href="https://www.baidu.com">百度一下,你就知道</a>
元素定位xpath语法与css语法:
一般,我们定位的方式大部分都是用css来定位,因为css语法简洁、点位速度快、抗变形强,只有存在需求稳定下来不频繁更改时,不更改界面的元素代码时,可以通过xpath来定位,所以xpath这也就成为了css的后盾,用css定位不了,就用xpath。
xpath语法:(以360搜索为例搜索框)
1.通过路径查找元素,一级一级查找,从html最外层一直查找到目标元素所在位置。
2.通过元素属性定位:
3.通过多个属性组合定位
4.通过层次与属性组合定位
css语法:(以360搜索为例搜索框)
1.用css的属性定位(常用)
dr.find_element_by_css_selector("标签[属性=‘属性值’]")
2.用id或者class定位 id--用一个#代替 class--用一个.代替 (多应用于css的层级与属性结合定位)
3.css的层级和属性结合定位(父类标签:爸爸>儿子)