selenium webDriver 之元素定位二

上一篇 / 下一篇  2015-03-10 19:26:54 / 个人分类:原创

9.使用CSS选择器定位元素

使用CSS选择器定位元素相对Xpath更可靠更快速定位复杂的元素。

9.1使用绝对路径来定位元素(使用绝对路径时每个元素之间要有一个空格)

WebElement userName = driver.findElement(By.cssSelector(“html body div div form. input”))

9.2使用相对路径来定位元素

WebElement userName = driver.findElement(By.cssSelector(“input”));

---使用相对路径+class属性值来定位元素

先指定HTML标签,然后加一个“.”符号,跟上Class属性的值(此方法与className()类似)

WebElement loginButton = driver.findElement(By.cssSelector(“input.login”))

9.3使用相对ID选择器来定位元素

先指定HTML标签,然后加上一个“#”,跟上id的属性值(或省略HTML标签,直接输入“#”符号,更上id即可)

WebElement userName = driver.findElement(By.cssSelector(“input#username”));

这就爱那个返回input标签中idusername的元素。

这个方法和id选择器策略类似。

9.4使用属性来定位元素

CSS选择器也可以使用其他的元素属性来定位

WebElement userName = driver.findElement(By.cssSelector(“input[name=username]”));

WebElement btn = driver.findElement(By.cssSelector(“img[alt=’Previous’]”))

当一个属性不足以定位到一个元素时,可联合使用其他属性

WebElement btn2 = driver.findElement(By.cssSelector(“input[type=’submit’][value=’Login’]”))

9.5使用属性名称选择器来定位元素

只通过指定元素中属性的名称而不是属性的值来定位元素。

例如:查找所有<img>标签中,含有alt属性的元素。

List<WebElement> imagesWithAlt = driver.findElement(By.cssSelector(“img[alt]”))

Not()伪类用来匹配不满足规则的元素,例如定位那些<img>标签中不含有alt属性的

List<WebElement> imagesWithAlt = driver.findElement(By.cssSelector(“img:not([alt])”)

9.6部分属性值的匹配

CSS选择器提供了一个部分属性值匹配定位元素的方法,这为了测试哪些页面上具有动态变化的属性的元素是非常有用的。例如,元素id是动态生成的。

^=     首部匹配         Input[id^=’ctrl’]       将匹配到idCtrl开头的元素

$=     尾部匹配         input[id$=’_user]    将匹配到Id_user结尾的元素

*=     包含                   input[id*=’user’]     将匹配到id包含user的元素

10.使用XPath定位元素

        利用Xpath来定位元素非常方便,但是辩解的定位策略牺牲了系统的性能。

XpathCSS重要的区别在于Xpath可以向前和向后查询DOM结构的元素,而CSS只能向后查询。这意味着使用Xpath可以通过子元素来定位父元素。

10.1通过绝对路径定位元素

WebElement userName = driver.findElement(By.xpath(“html/body/div/form/input”));

10.2通过相对路径定位元素

WebElement userName = driver.findElement(By.xpath(“//input”))

10.3使用索引来定位元素

当通过标签匹配会匹配多个元素时,可指定元素的索引来找到他。

WebElement pwd = driver.findElement(By.xpath(“//input[2]”));

10.4使用Xpath及属性值定位元素

WebElement userName = driver.findElement(By.xpath(“//input[@id=’username’]”));

一个属性不足以定位元素,需联合使用多个属性来达到精确匹配。

WebElement previousButton = driver.findElement(By.xpath(“//input[@type=’submit’][@value=’Login’]”))

        或使用and操作符

WebElement previousButton = driver.findElement(By.xpath(“//input[@type=’submit’ and @value=’Login’]”))

使用or操作如,任何一个属性满足就可以对元素进行定位

WebElement previousButton = driver.findElement(By.xpath(“//input[@type=’submit’ or @value=’Login’]”));

10.5使用Xpath及属性名称定位元素

List<WebElement> imagesWithAlt = driver.findElements(By.xpath(“img[@alt]”));

10.6部分属性值的匹配

Starts-with()      input[starts-with(@id, ‘ctrl’)]          **开头

Ends-with()        input[ends-with(@id, ‘_user’)]       **结尾

Contains()          input[contains(@id, ‘user’)]            包含**

10.7使用值来匹配任意属性及元素

Xpath可以匹配任意元素属性中指定的值

WebElement userName = driver.findElement(By.xpath(“//input[@*=’username’]”));

查找所有Input元素中是否有属性等于username的。

10.8使用Xpath来定位元素

11.使用文本元素

11.1使用CSS选择器伪类定位元素

         WebElement cell = driver.findElement(By.cssSelector(“td:contains(‘Item1’)”));

        注:contains()方法已经被CSS3弃用了

11.2使用Xpathtext函数

Text()方法来定位指定文本的元素

WebElement cell = driver.findElement(By.xpath(“//td[contains(text(),’item1’)]”));

这里contains()text()函数一起使用。Text()函数返回完整文本,contains()函数将检查是否包含此文本。

11.3使用Xpath精确文本定位元素。

WebElement cell = driver.findElement(By.xpath(“//td[.=’Item’]”))

12.使用高级的CSS选择器定位元素

12.1查询子元素

伪类

例子

描述

:first-child

Form#loginForm.:first-child

定位表单里第一个子元素username标签

:last-child

Form#loginForm.:last-child

定位表单最优一个子元素login按钮

:nth-child

Form#loginForm.:nth-child(2)

定位表单中第二个子元素username的输入框

12.2查询兄弟元素

利用CSS选择器,我们可以使用“+”操作符来定位兄弟元素。

WebElement web = driver.findElement(By.cssSelector(“#nv a + b”))

#nv a定位到新闻链接,“+ b”后就找到其兄弟<b>元素

12.3使用用户操作伪类

使用用户的操作行为:focus伪类,定位焦点在input框中的元素

WebElement product = driver.findElement(By.cssSelector(“input:focus”));

12.4使用UI状态伪类

如:enabledisablechecked

伪类

例子

描述

:enable

Input:enable

定位所有属性为enableinput的元素

:disable

Input:disable

定位所有属性为disableinput的元素

:checked

Input:checked

定位所有多选框属性为checked的元素

13.使用jQuery选择器

jQuery

TAG: 元素

 

评分:0

我来说两句

日历

« 2024-04-18  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 18277
  • 日志数: 25
  • 建立时间: 2014-11-10
  • 更新时间: 2015-03-12

RSS订阅

Open Toolbar