selenium 找元素的方法

来源:互联网 发布:java中的compare 编辑:程序博客网 时间:2024/05/30 13:43

一、找元素的方法By方法

1、By.id:一般都是唯一的  eg:id = name

2、By.name:页面若有多个name,则会选中第一个name  eg:name = name

3、By.className:     eg:class =name

Selenium WebDriver提供了findElement()方法来定位页面中需要测试的元素。当开始寻找符合指定条件元素时,它将会查询整个DOM,然后返回第一个找到的匹配的元素

More:

如果页面上有一些重复的元素。但是他们在不同的<div>中。需要先定位父元素<div>,再定位其子元素,方法如下:

4、WebElement div =driver.findElement(By.id(“div1”));

WebElement topLink = div.findElement(By.linkText(“top”));

 

也可以缩写成一行:

WebElement topLink =driver.findElement(By.id(“div1”)).findElement(By.linkText(“top”))

 

5、By.linkText:

通过部分链接名称定位链接:

WebElement inboxLink =driver.findElement(By.partialLinkText(“inbox”));

System.out.println(inboxlink.getText());

6、By.tagName()和getElementByTagName()很相似

如果想统计<table>中邮多少行,可以这样做

WebElement table =driver.FindElement(By.id(“summaryTable”));

List<WebElement> rows =table.findElement(By.tagName(“tr”));

assertEquals(10,rows.size());

 

7、By.linkText()

WebElement gmailLink = driver.findElement(By.linkText(“Gmail”));

assertEquals(“http://mail.google.com/”,gmailLink.getAttribute(“href”));

 

8、通过部分链接名称定为链接

PartialLinkTest()来定位固定的已知不变的一部分名称

WebElement inboxLink =driver.findElement(By.partialLinkText(“Inbox”));

System.out.println(inboxLink.getText());

9、cssSelector这种方式,有限制,取决于页面的整个结构。若有改变,则找不到该元素。

By.cssSelector(“html>body>div>div>form>input”)

使用相对路径来定位元素

可以用class属性定为元素,先指定一个HTML标签,加一个.符号,跟上class属性的值。

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

                                                                                     (By.cssSelector(“.login”));

此方法,与By.className()很相似

用相对ID选择器来定位元素.可以先指定一个HTML标签,再加上一个#,跟上id的属性值

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

                                                                           (By.CssSelector(“#userName”));这里跟id选择器很像。

使用input中的name属性定为。

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

类似于By.name()方法

定位<img>元素

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

使用多个属性定位<input>元素

WebElement previousButton =driver.findElement(By.cssSelector(“input [type = ‘submit’][value = ‘login’]”))


使用属性名称选择器来定为元素。

与之前的不同,我们只通过指定元素中属性的名称而不是属性的名字来定为元素。

List<WebElement> imageWithAlt =driver.findElements(By.cssSelector(“img[alt]”));

Not()伪类也使用来匹配不满足规则的元素。如,想要定位<img>标签中不含alt属性

方法如下:

List<WebELlment> imageWithoutAlt =driver.findElements(By.cssSelector(“img:not([alt])”))

一、使用xpath定位元素

1、  使用绝对路径定位用户名字段,在每个元素之间需要有一个空格

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

通过相对路径                                                   (By.xpath(“//input”));

2、  通过索引定位元素。找到第二个<input>

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

3、  xpath中使用元素的属性定位元素。如ID

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

         使用alt属性定位image

            WebElement previousButton =driver.findElement(By.xpath(“//input[@alt = ‘previous’]”))

使用多个属性来定位<input>元素,可以使用or或and

WebElement previousButton =

driver.findElement(By.xpath(“//input[@type= ‘submit’][@value = ‘login’]”))

4、  使用指定元素中属性的名称而不是属性的值来定位元素。Eg:

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


0 0
原创粉丝点击