Skip to content

常见控件交互方法


简介

常见的控件交互包含了元素的操作和元素属性的获取。元素操作,也就是对页面元素可以做哪些操作,比如点击,输入,清空等等。找到对应元素之后,就可以获取它的属性,比如获取元素的文本,获取元素的属性,获取元素的坐标等等。


元素操作

  • 通过以下场景,演示元素如何操作:
    • 输入"霍格沃兹测试开发"
    • 清空搜索框中信息
    • 演练地址: https://www.sogou.com/

Python 版本

from selenium import webdriver
from selenium.webdriver.common.by import By


class TestInteractions:
    def setup_method(self):
        # 初始化 WebDriver
        self.driver = webdriver.Chrome()
        # 设置隐式等待时间
        self.driver.implicitly_wait(10)

    def teardown_method(self):
        # 退出浏览器
        self.driver.quit()

    def test_interaction_demo(self, driver):
        driver.get("https://www.sogou.com/")
        # 输入内容
        search_box = driver.find_element(By.ID, "query")
        search_box.send_keys("霍格沃兹测试开发")
        # 清空输入框
        search_box.clear()
        # 点击搜索按钮
        search_button = driver.find_element(By.ID, "stb")
        search_button.click()

Java 版本

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;

public class InteractionsTest {
    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 interactionDemo(){
        driver.get("https://www.sogou.com/");
        // 输入霍格沃兹测试开发
        driver.findElement(By.id("query")).sendKeys("霍格沃兹测试开发");
        // 清空输入框
        driver.findElement(By.id("query")).clear();
        // 点击搜索
        driver.findElement(By.id("stb")).click();
    }
}

获取元素属性信息

  • 原因: - 定位到元素后,获取元素的文本信息,属性信息等
  • 目的: - 根据这些信息进行断言或者调试
  • 演练地址: https://vip.ceshiren.com/#/ui_study

获取元素属性信息的方法

  • 获取元素文本
  • 获取元素的属性(html 的属性值)

Python 版本

# Python 版本

from selenium import webdriver
from selenium.webdriver.common.by import By


class TestInteractions:

    def setup_class(self):
        # 初始化WebDriver
        self.driver = webdriver.Chrome()
        # 设置隐式等待
        self.driver.implicitly_wait(10)

    def teardown_class(self):
        # 退出WebDriver
        self.driver.quit()

    def test_interaction_demo2(self):
        # 打开ui练习网址
        self.driver.get("https://vip.ceshiren.com/#/ui_study")
        # 获取元素文本
        text = self.driver.find_element(By.ID, "frame").text
        # 获取这个元素的name属性的值
        text2 = self.driver.find_element(By.ID, "locate_id").get_attribute("name")
        print(text)
        print(text2)

Java 版本

// Java 版本

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;

public class InteractionsTest {
    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 interactionDemo2(){
        driver.get("https://vip.ceshiren.com/#/ui_study");
        // 获取元素文本
        String text = driver.findElement(By.id("frame")).getText();
        // 获取这个元素的name属性的值
        String text2 = driver.findElement(By.id("locate_id")).getAttribute("name");
        System.out.println(text);
        System.out.println(text2);
    }
}

总结

  • 点击
  • 输入
  • 清空
  • 获取元素属性信息