WebDriver获取页面元素

上一篇 / 下一篇  2015-07-01 17:26:07 / 个人分类:selenium

 By.xpath()
注意:1. 元素的xpath绝对路径可通过firebug直接查询。2. 一般不推荐使用绝对路径的写法,因为一旦页面结构发生变化,该路径也随之失效,必须重新写。3. 绝对路径以单/号表示,相对路径则以//表示,这个区别非常重要。另外,当xpath的路径以/开头时,表示让Xpath解析引擎从文档的根节点开始解析。当xpath路径以//开头时,则表示让xpath引擎从文档的任意符合的元素节点开始进行解析。而当/出现在xpath路径中时,则表示寻找父节点的直接子节点,当//出现在xpath路径中时,表示寻找父节点下任意符合条件的子节点,不管嵌套了多少层级。弄清这个原则,就可以理解其实xpath的路径可以绝对路径和相对路径混合在一起来进行表示,想怎么玩就怎么玩
1、根据是否使用属性,Xpath的语法格式有两种:

不使用属性:按照html的层次,如/html/body/header/nav/ul[1]/li[5]/a/span

使用属性://input[@class='input'],直接定位
多个属性来定位,如//input[@class='input’ and @type='text’]

xpath="//input[@name='wirelessResult'][@value='1']"

xpath="//div[contains(@style,'visibility: visible')]//span/b[contains(text(),'系统异常')]"

findElement(By.xpath("//span[contains(text(),'"+spanContains+"')]"));可以通过传参的方式找到元素

td[not(contains(@style,' display: none'))]

div[@class=' x-panel x-panel-noborder'or@class='x-panel x-panel-noborder']

By. className

By.className(className))   ===Selenium2不支持类名中有空格

今天使用Selenium2进行查找元素的时候,因为要查找的元素有两个类名,因此使用了下面的代码获取元素:

WebElement submit = driver.findElement(By.className("info_list login_btn"));

但是报了:

org.openqa.selenium.WebDriverException: unknown error: Compound class names not permitted

原来Selenium2不支持类名中有空格,在Stackoverflow上面找到了方法,修改如下:

WebElement submit = driver.findElement(By.cssSelector(".info_list.login_btn"))

TAG: 元素

 

评分:0

我来说两句

Open Toolbar