selenium学习(三)-定位页面元素(Target)

对于很多selenium命令,target域是必须的。Target在web页面范围内识别UI元素,它使用locatorType(定位类型)=location(定位值)的格式。

 html>

<body>

<form id= "loginForm" >

<input name= "username" type= "text" />

<input name= "password" type= "password" />

<input name= "continue" type= "submit" value= "Login" />

<input name= "continue" type= "button" value= "Clear" />

<a href= "continue.html" >Continue</a>

</form>

</body>

</html>

1、identifier定位
如果没有定位类型,那么它是一种默认的方式。如果使用这种方式,IDE首先会寻找首个id属性等于定位置的页面元素,如果id没有,那么会寻找首个name属性等于定位值的页面元素,如果都没有,则定位失败。 identifier = 定位值。

2、id定位:id = 定位值

3、name定位:name = 定位值

4、XPath定位
XPath表达式用于XML文档中定位节点,当找不到合适的id或name属性来定位元素时,就可以用XPath。可以使用绝对路径(不推荐),也可以使用id或name属性,如果XPath表达式以“//”开头,那么可以省略“xpath=”,也可不省。
xpath=/html/body/form[1] //绝对路径(html的任何轻微改变都会导致失败)
//form[1] //HTML中的第三个form元素
xpath=//form[@id='loginForm'] //id为loginFrom的元素
//input[@name='username'] //input元素且其name为‘username’
//form[@id='loginForm']/input[1] //针对id为‘loginForm’的form,定位它的第一个input元素
//input[@name='continue'][@type='button'] //name为‘continue’且type为‘button’的input
//form[@id='loginForm']/input[4] //id为‘loingForm’的form,定位它的第四个input元素。

扩展阅读:
W3C XPath Recommendation: http://www.w3.org/TR/xpath/
XPath Tutorial: http://www.zvon.org/xxl/XPathTutorial/General/examples.html
http://www.w3.org/TR/xpath/
Firefox插件,可以帮助你获取页面元素的XPath:
XPath Checker Firebug

5、通过链接文字定位
link = 定位值

6、DOM定位
Document Object Model 被用于描述HTML文档,可以使用javaScript来访问。这一定位策略通过javaScript评估页面上的元素,可以使用分级符号来简化元素定位。
因为DOM定位以“document”开始,所以“dom=”标签并不是必须的。
dom=document.getElementById('loginForm') // 定位页面元素form
dom=document.forms['loginForm'] // 定位页面元素form
dom=document.forms[0] // 定位页面元素form
document.forms[0] .usernam //定位页面元素username
document.forms[0] .elements[3] //定位页面元素continue,它是form的第四个元素

7、CSS定位
CSS(Cascading Style Sheets)是一种语言,它被用来描述HTML和XML文档的表现。CSS使用选择器来为页面元素绑定属性。这些选择器可以被selenium用作另外的定位策略。
css=form#loginForm //定位页面元素form
css=input[name="username"] //定位页面元素username
css=input.required[type="text"] //定位页面元素,其类型为text
css=input.passfield //定位页面元素,其类型为password
css=#loginForm input[type="button"] //定位页面元素,其类型为button
css=#loginForm input:nth-child(2) //定位页面元素passfield,且它为from的第二个input子元素

扩展阅读:
http://www.w3.org/TR/css3-selectors/

提示:很多有经验的selenium用户推荐CSS定位方式,因为它比XPath更快。而且可以在HTML文件中找到更复杂的对象。

ps:本文参考博主 虫师的博文,http://www.cnblogs.com/fnng/archive/2012/01/12/2321117.html,以及参考书《selenium自动化测试指南》,赵卓著、《零基础实现web自动化测试》,温素剑著。

posted @ 2017-04-16 17:46  小杏的确幸  阅读(2543)  评论(0编辑  收藏  举报