元素的定位
对象的定位应该是自动化测试的核心,webdriver 提供了一系列的对象定位方法,常用的有以下几种:
id
name
class name
link text
partial link text
tag name
xpath
css selector
用百度输入框举例子:
这里先介绍一下火狐浏览器的插件Firebug,这是一款专门定位元素的小软件,在火狐浏览器工具箱的附加组件里找到firebug并安装,图标像只小蜜蜂,点击出现弹出框,然后打开百度首页,在firebug弹出框的菜单里选择蜜蜂图标后面那个,点击后鼠标移到百度页面选中搜索框,便出现如图样式:
对象的定位应该是自动化测试的核心,webdriver 提供了一系列的对象定位方法,常用的有以下几种:
id
name
class name
tag name
css selector
xpath
link text
partial link text
用百度输入框举例子:
这里先介绍一下火狐浏览器的插件Firebug,这是一款专门定位元素的小软件,在火狐浏览器工具箱的附加组件里找到firebug并安装,图标像只小蜜蜂,点击出现弹出框,然后打开百度首页,在firebug弹出框的菜单里选择蜜蜂图标后面那个箭头图标,点击后鼠标移到百度页面选中搜索框,便出现如图样式:
可以看到搜索框的id为kw,name为wd,因此,
1、通过id定位:browser.find_element_by_id("kw").send_keys("selenium")
2、通过name定位:browser.find_element_by_name("wd").send_keys("selenium")
id 和name 是我们最最常用的定位方式,因为大多数控件都有这两个属性,而且在对控件的id 和name 命名时一般使其有意义也会取不同的名字.对于class 和tag name(标签名),input 就是一个标签的名字,class也可以从上图中看到。
3、通过tag name 方式:browser.find_element_by_tag_name("input").send_keys("selenium")
4、通过class name 方式:browser.find_element_by_class_name("s_ipt").send_keys("selenium")
CSS(Cascading Style Sheets)是一种语言,它被用来描述HTML 和XML 文档的表现。CSS 使用选择器来为页面元素绑定属性。这些选择器可以被selenium 用作另外的定位策略。
5、通过CSS 方式:browser.find_element_by_css_selector("#kw").send_keys("selenium")
通过find_element_by_css_selector( )函数,选择取百度输入框的id 属性来定义也可以取name 属性,
<a href="http://news.baidu.com" name="tj_news">新闻</a>
driver.find_element_by_css_selector("a[name=\"tj_news\"]").click()
感觉用CSS定位非常灵活,只是我还没学会具体怎么使用,比较习惯用xpath。
对CSS具体的讲述教程参见:
http://www.w3.org/TR/css3-selectors/
http://www.w3school.com.cn/css/css_positioning.asp
6、xpath也是一大块知识体系
什么是XPath:http://www.w3.org/TR/xpath/
XPath 基础教程:http://www.w3schools.com/xpath/default.asp
还拿百度举例:
通过xphan 方式:browser.find_element_by_xpath("//input[@id='kw']").send_keys("selenium")
再举例:
xpath("//div[@id='fm']/form/span/input")表示定位在/form/span/input 层级标签下有个div 标签的id=fm 的元素
xpath("//tr[@id='check']/td[2]")表示tr标签下id 为'check' ,定位到他里面的第2个
xpath("//tr[7]/td[2]")表示第7个tr 里面的第2个td
xpath("//a[contains(text(),'网页')]")表示在a 标签下有个文本(text)包含(contains)'网页' 的这个元素
xpath("//a[@href='http://www.baidu.com/']")表示有个叫a 的标签,他有个链接href='http://www.baidu.com/ 的元素
7、有时候不是一个输入框也不是一个按钮,而是一个文字链接,我们可以通过link
browser.find_element_by_link_text("贴吧").click()
8、通过部分链接定位,这个有时候也会用到,拿上面的例子,我可以只用链接的一部分文字进行匹配:
browser.find_element_by_partial_link_text("贴").click()