jck28-lucio-常见控件定位方法

目录

  • HTML铺垫
  • Selenium八大定位方式
  • 常用定位方式练习

HTML铺垫

  • 标签:<a>
  • 属性:href
  • 类属性: class
!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>测试人论坛</title>
</head>
<body>
<a href="https://ceshiren.com/" class="link">链接</a>
</body>
</html>

Selenium定位方式

Selenium提供了八种定位方式:https://www.selenium.dev/documentation/webdriver/elements/locators/

selenium 常用定位方式

#格式
WebElement Web元素对象 = driver.findElement(By.定位方式(“定位元素”));

示例,ID定位

WebElement fruits = driver.findElement(By.id(“fruits”));

通过 id 定位

  • 格式: WebElement webElement = driver.findElement(By.id("ID属性对应的值"));
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

import java.time.Duration;

/**
 * @Author: 霍格沃兹测试开发学社
 * @Desc: '更多测试开发技术探讨,请访问:https://ceshiren.com/t/topic/15860'
 */

public class LocatorTest {
    public static WebDriver driver;

    @BeforeAll
    static void setUpAll() {
        driver = new ChromeDriver();
        //显式等待
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
    }
    @AfterAll
    static void tearDownAll(){
        driver.quit();
    }

    @Test
    void locatorByID() {
        driver.get("https://ceshiren.com/");
        driver.findElement(By.id("site-logo")).click();
    }
    
}

name 定位

  • 格式: driver.find_element(By.NAME, "Name属性对应的值")
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

import java.time.Duration;
/**
 * @Author: 霍格沃兹测试开发学社
 * @Desc: '更多测试开发技术探讨,请访问:https://ceshiren.com/t/topic/15860'
 */

public class LocatorTest {
    public static WebDriver driver;

    @BeforeAll
    static void setUpAll() {
        driver = new ChromeDriver();
        //显式等待
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
    }
    @AfterAll
    static void tearDownAll(){
        driver.quit();
    }

    @Test
    void locatorByName() throws InterruptedException {
        driver.get("http://www.baidu.com");
        driver.findElement(By.name("tj_briicon")).click();
        Thread.sleep(1000);
    }
}

css selector 定位

  • 格式: driver.findElement(By.cssSelector("css表达式"));
  • css selector获取方式:

xpath 定位

  • 格式: driver.findElement(By.xpath("xpath表达式"));
  • xpath表达式获取方式:

link 定位

  • 格式:
    • driver.findElement(By.linkText("链接的文本信息"));
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

import java.time.Duration;


/**
 * @Author: 霍格沃兹测试开发学社
 * @Desc: '更多测试开发技术探讨,请访问:https://ceshiren.com/t/topic/15860'
 */

public class LocatorTest {
    public static WebDriver driver;

    @BeforeAll
    static void setUpAll() {
        driver = new ChromeDriver();
        //显式等待
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
    }

    @AfterAll
    static void tearDownAll() {
        driver.quit();
    }

    @Test
    void locatorByName() throws InterruptedException {
        driver.get("https://ceshiren.com/");
        // 输入链接的文本信息定位,并点击
        driver.findElement(By.linkText("20220626测试平台开发训练营")).click();
        // 强等三秒展示效果
        Thread.sleep(3000);
    }
}