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


















  • 相关阅读:
    shell脚本
    Dockerfile
    【剑灵攻略】003、XXXfragment that is not a fragment错误,fragment认不出来
    【剑灵攻略】002、android工程引用方式
    【剑灵攻略】001、底部菜单栏实现
    ViewPager动画切换
    android raw与assets区别
    android+eclipse+maven环境搭建
    解决在IE8中无法使用原生JSON的问题
    Windows Phone Toast通知
  • 原文地址:https://www.cnblogs.com/Daisyjm/p/8849503.html
Copyright © 2020-2023  润新知