• 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"));
    }


















  • 相关阅读:
    IDEA 错误:程序包XXX不存在
    202A 202B 202C 202D 202E字符的作用及解释
    MySQL 获取每月多少日的sql写法
    Mybatis Plus使用租户过滤无效解决方案
    Shiro集成多个Realm,认证都不通过返回y configured realms. Please ensure that at least one realm can authenticate these tokens.
    使用IDEA开发SpringBoot不加载application.yml配置文件的解决方案
    集成SpringCloudBus,但没有总线通知更改
    Gradle 使用@Value注册编译报错
    Shiro Session放到Redis中常遇到的问题
    前端页面调试方式的选择
  • 原文地址:https://www.cnblogs.com/Daisyjm/p/8849503.html
Copyright © 2020-2023  润新知