web自动化测试第2步:定位元素
2017-06-01 11:24
281 查看
这一节,我们介绍一下页面元素定位的八种方式和如何通过火狐和谷歌浏览器获取元素定位信息,减少自己的工作量
1.页面元素的定位方法
上一节我们已经配置好了环境并且可以通过脚本打开浏览器了,说明我们已经打开了自动化测试的大门,接下来就开始学习如何定位页面元素
html页面是有一个个的标签组成的,我们定位元素其实就是定位这些标签
首先来看一下有哪儿几种定位方式:
id
name
class name
tag name
link text
partial link text
xpath
css selector
一共8种定位方式,其实常用的定位方式也有:xpath、css selector,至少要熟练掌握一种,因为它太强大了,可以包括和替代其他的几种方法。
下面分别介绍一下
1.id定位
id定位
代码的意思就是定位id为:“wd1”的输入框并输入了“python”这个数据
2.name定位
name定位
我们通过观察这个<input>标签的属性,通过name也可以成功定位这个元素
3.class name定位
class name定位
结果我们发现系统报错了,由于这个输入框的class中有四个class,
所以当我们同点来分割时,报错:Unable to locate element:;当我们用空格分割时,报错: Compound class names not permitted
而当我们用其中一个class时,比如:search_ipt
这时我们才可以成功的定位元素(一般不建议用这个class name来定位)
4.tag name定位
tag name 定位
我们直接定位这个元素的标签名,可以成功定位,但是由于实际中tag name有很多相同的标签,可能会在运行时定位不准确,所以不建议使用这个
5.link text定位
link text定位
然后我们通过链接的名字找到元素,并进行click()点击操作,进入到了地图页
6.partial link text定位
partial link text定位
同样的,我们通过链接的部分文字信息来定位到这个元素,依旧可以成功定位
7.xpath定位
xpath定位
xpath是比较常用的定位,由于定位比较准确,一般是百发百中,但是缺点是绝对路径的xpath根据元素标签的相对位置来定位,如果页面的UI元素有所改动,结构路径变化的话,也会导致我们无法定位元素,不过这是针对我们用firepath自动获取时的定位,我们完全可以根据层级关系和元素属性自己来写xpath路径,这样的话,即使其他路径结构变化,对于xpath定位的准确度还有一定的保障
比如:
1.我们把xpath的父级路径添加上
2.我们还可以对所查找元素标签里的属性进行组合
3.我们对文本进行匹配
这样一来,可以看出xpath简直是神器啊,有没有,可以通过标签的各种属性来定位,等于说是包含了class name、name、id、link_text这些定位的方法
8.css selector定位
其实这个css selector定位的强悍和xpath不相上下,也非常之强大,比如在css selector里:
我用class来定位:driver.find_element_by_css_selector(".search_ipt")
用id来定位:driver.find_element_by_css_selector("#wd1")
用标签名来定位(tag name):driver.find_element_by_css_selector("input")
用父子关系来定位:driver.find_element_by_css_selector("form>input")
用标签和属性来定位:driver.find_element_by_css_selector("input[i
4000
d='wd1']")
以及综合上边的超级组合查询:driver.find_element_by_css_selector("form.clearfix>input[id='wd1']") #代表着class为clearfix的父级标签和自己id属性为wd1的input标签
这些就是定位元素的方法,很基础也非常重要。
二:自动获取xpath 和css selector的插件:
火狐浏览器:
一般我用firefox浏览器的firebug+firepath插件来定位xpath(这两个插件大家在火狐浏览器的附加组件里下载即可)
定位的模式我们可以选择不同的显示模式来显示xpath、css等
xpath:
css:
这是以后我们会经常用到的工具,大家要多熟悉熟悉
google浏览器:
1.首先右键》检查,调出来开发者工具
2.点击指针工具选中页面上的元素
3.在源码标识蓝色界面上右键>选择copy>Copy Selector 或者Copy Xpath
1.页面元素的定位方法
上一节我们已经配置好了环境并且可以通过脚本打开浏览器了,说明我们已经打开了自动化测试的大门,接下来就开始学习如何定位页面元素
html页面是有一个个的标签组成的,我们定位元素其实就是定位这些标签
首先来看一下有哪儿几种定位方式:
id
name
class name
tag name
link text
partial link text
xpath
css selector
一共8种定位方式,其实常用的定位方式也有:xpath、css selector,至少要熟练掌握一种,因为它太强大了,可以包括和替代其他的几种方法。
下面分别介绍一下
1.id定位
from selenium import webdriver driver =webdriver.Chrome() driver.get("https://tieba.baidu.com/") driver.find_element_by_id("wd1").send_keys("python")
id定位
代码的意思就是定位id为:“wd1”的输入框并输入了“python”这个数据
<input id="wd1" class="search_ipt search_inp_border j_search_input tb_header_search_input" name="kw1" value="" autocomplete="off" size="42" tabindex="1" maxlength="100" x-webkit-grammar="builtin:search" x-webkit-speech="true" type="text">对于这个输入框,我们还可以采用其他的方法定位,
2.name定位
from selenium import webdriver driver =webdriver.Chrome() driver.get("https://tieba.baidu.com/") driver.find_element_by_name("kw1").send_keys("python")
name定位
我们通过观察这个<input>标签的属性,通过name也可以成功定位这个元素
3.class name定位
from selenium import webdriver driver =webdriver.Chrome() driver.get("https://tieba.baidu.com/") driver.find_element_by_class_name("search_ipt.search_inp_border.j_search_input.tb_header_search_input").send_keys("python")
class name定位
结果我们发现系统报错了,由于这个输入框的class中有四个class,
所以当我们同点来分割时,报错:Unable to locate element:;当我们用空格分割时,报错: Compound class names not permitted
而当我们用其中一个class时,比如:search_ipt
这时我们才可以成功的定位元素(一般不建议用这个class name来定位)
4.tag name定位
from selenium import webdriver driver =webdriver.Chrome() driver.get("https://tieba.baidu.com/") driver.find_element_by_tag_name("input").send_keys("python")
tag name 定位
我们直接定位这个元素的标签名,可以成功定位,但是由于实际中tag name有很多相同的标签,可能会在运行时定位不准确,所以不建议使用这个
5.link text定位
from selenium import webdriver driver =webdriver.Chrome() driver.get("https://tieba.baidu.com/") driver.find_element_by_link_text("地图").click()
link text定位
然后我们通过链接的名字找到元素,并进行click()点击操作,进入到了地图页
6.partial link text定位
from selenium import webdriver driver =webdriver.Chrome() driver.get("https://tieba.baidu.com/") driver.find_element_by_partial_link_text("地").click()
partial link text定位
同样的,我们通过链接的部分文字信息来定位到这个元素,依旧可以成功定位
7.xpath定位
from selenium import webdriver driver =webdriver.Chrome() driver.get("https://tieba.baidu.com/") driver.find_element_by_xpath(".//*[@id='wd1']").send_keys("python")
xpath定位
xpath是比较常用的定位,由于定位比较准确,一般是百发百中,但是缺点是绝对路径的xpath根据元素标签的相对位置来定位,如果页面的UI元素有所改动,结构路径变化的话,也会导致我们无法定位元素,不过这是针对我们用firepath自动获取时的定位,我们完全可以根据层级关系和元素属性自己来写xpath路径,这样的话,即使其他路径结构变化,对于xpath定位的准确度还有一定的保障
比如:
1.我们把xpath的父级路径添加上
//form/input[@id='wd1']
2.我们还可以对所查找元素标签里的属性进行组合
//form/input[@id='wd1' and @name='kw1']
3.我们对文本进行匹配
driver.find_element_by_xpath("//*[contains(text(),'网页')]").click()
这样一来,可以看出xpath简直是神器啊,有没有,可以通过标签的各种属性来定位,等于说是包含了class name、name、id、link_text这些定位的方法
8.css selector定位
from selenium import webdriver driver =webdriver.Chrome() driver.get("https://tieba.baidu.com/") driver.find_element_by_css_selector("#wd1").send_keys("python")通过css selector 定位
其实这个css selector定位的强悍和xpath不相上下,也非常之强大,比如在css selector里:
我用class来定位:driver.find_element_by_css_selector(".search_ipt")
用id来定位:driver.find_element_by_css_selector("#wd1")
用标签名来定位(tag name):driver.find_element_by_css_selector("input")
用父子关系来定位:driver.find_element_by_css_selector("form>input")
用标签和属性来定位:driver.find_element_by_css_selector("input[i
4000
d='wd1']")
以及综合上边的超级组合查询:driver.find_element_by_css_selector("form.clearfix>input[id='wd1']") #代表着class为clearfix的父级标签和自己id属性为wd1的input标签
这些就是定位元素的方法,很基础也非常重要。
二:自动获取xpath 和css selector的插件:
火狐浏览器:
一般我用firefox浏览器的firebug+firepath插件来定位xpath(这两个插件大家在火狐浏览器的附加组件里下载即可)
定位的模式我们可以选择不同的显示模式来显示xpath、css等
xpath:
css:
这是以后我们会经常用到的工具,大家要多熟悉熟悉
google浏览器:
1.首先右键》检查,调出来开发者工具
2.点击指针工具选中页面上的元素
3.在源码标识蓝色界面上右键>选择copy>Copy Selector 或者Copy Xpath
相关文章推荐
- Selenium2自动化测试-一种低效但有效的web元素定位方法
- Selenium2自动化测试-一种低效但有效的web元素定位方法
- Robot Framework与Web界面自动化测试学习笔记:利用xpath定位元素
- 总结Selenium自动化测试方法(三)WebDriver定位元素方法
- 一只自动化测试小白的学习记录——Python+Selenium+Sublime 运用API、元素定位、元素操作方法、鼠标键盘事件实现入门Web自动化测试
- selenium webdriver 学习总结-元素定位(一)
- Watir-webdriver_ruby元素操作与定位
- Selenium(四)――webdriver 之定位页面元素
- selenium webdriver定位不到元素的五种原因及解决办法
- 说说watir-webdriver那些事(三)如何定位页面元素
- Selenium + Webdriver 学习(四) 元素定位方法
- WebDriver拾级而上·之三 定位页面元素
- selenium webdriver定位不到元素的五种原因及解决办法
- webdriver基础python版(二)简单的元素定位
- Selenium2(webdriver)_定位不到元素常见原因及解决办法
- webdriver(python)学习笔记四——定位一组元素
- Webdriver学习笔记(三)元素的查找定位
- 自动化测试web控件定位方法
- WebDriver拾级而上·之三 定位页面元素
- selenium webdriver定位不到元素的五种原因及解决办法