TestNG查找元素

Posted Daisyjm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TestNG查找元素相关的知识,希望对你有一定的参考价值。

重点:

一、八种方法查找元素

1、ID 一般是唯一的(By.id)

WebElement keyfind = driver.findElement(By.id("kw"));

2、name 使用是要确定当前打开页面是否是唯一的,如果不是,那么就会找打多个,无法进行操作。(By.name)

如何确定是否唯一?审查元素:Ctrl+F

3、链接文本

注意:只适应于a表标签

4、部分链接文本

注意:只适应于a表标签 

5、通过tagname查找元素,很少用到。

6、xpath查找(By.xparh(xpath路径))

7、CSS选取

原则:有ID用ID,但是ID可能是随机数。没有ID用name,如果name有重复,那么就用xpath。

二、findElement与findElements 的区别

从字面上理解,findElement查找到一个元素,findElements查找到多个元素,并且都有返回值。

findElement 定义:WebElement findElement(By var1);

findElements定义:List<WebElement> findElements(By var1);

注意:使用findElement 当定位到多个的时候,findElement  只输出第一个。

 @Test
public void findXparh02 (){
driver.get("https://www.baidu.com");
List<WebElement> list = driver.findElements(By.xpath("/html/body/div[1]/div[1]/div/div[3]/a[1]"));
// for (int i= 0; i<list.size() ; i++) {
//读取文本
String text = list.get(0).getText();
//输出文本
System.out.println(text);

}

三、常见错误

org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"class name","selector":"mine-text"}

这种错误一般是元素值错误,重新看下元素定位的值是不是正确。

 

一 、利用ID查找元素

package test02;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

public class TestFindElements {
WebDriver driver;
@BeforeMethod
public void browesOpen(){
System.setProperty("Webdriver.chrome.driver","F:\\工程文件\\drivers\\MicrosoftWebDriver.exe");
driver = new ChromeDriver();
}
@Test
public void findElements(){
driver.get("https://www.baidu.com");
WebElement keyfind = driver.findElement(By.id("kw"));
}
@AfterMethod
public void browesclose(){
driver.quit();
}



}

二、name查找元素
例2

@Test
public void findNameElements() {
driver.get("https://www.baidu.com");
WebElement keyfind = driver.findElement(By.name("wd"));
}


六、xpath获取元素
谷歌和火狐浏览器,先抓取你要的元素,然后右键copy-->copy xpath ;直接在代码中粘贴就可以了。
@Test
public void findxpath (){
driver.get("https://www.baidu.com");
WebElement keyfind = driver.findElement(By.xpath("//*[@id=\"su\"]"));

七、通过CSS查找
谷歌浏览器,先抓取你要的元素,然后右键copy-->copy selector ;直接在代码中粘贴就可以了。
火狐浏览器,先抓取你要的元素,然后右键copy-->CSS选择器;直接在代码中粘贴就可以了。
@Test
public void findCSS (){
driver.get("https://www.baidu.com");
WebElement keyfind = driver.findElement(By.cssSelector("#su"));
}


















以上是关于TestNG查找元素的主要内容,如果未能解决你的问题,请参考以下文章

Java - Test - TestNG: testng.xml 元素 class

java+Selenium+TestNg搭建自动化测试架构实现POM(page+Object+modal)

自动化测试历程 selenium+testng+java+reportng+jenkins

记录java+testng运行selenium--- 运行代码

java+Selenium+TestNg搭建自动化测试架构实现POM(page+Object+modal)

VSCode自定义代码片段5——HTML元素结构