在Selenium WebDriver中检索HTML输入的值

2023/05/10

1. 概述

众所周知,自动化测试是软件开发的重要组成部分。Selenium是一种广泛使用的工具,它使用特定于浏览器的驱动程序来自动测试Web应用程序

在本教程中,我们将学习如何设置Selenium项目以及如何从网页中检索HTML输入字段的值

2. 什么是Selenium WebDriver?

Selenium WebDriver是一个开源的自动化测试框架,它在本地驱动Web浏览器,像真实用户一样与它们交互。它支持一系列浏览器,包括Chrome、Firefox、Edge和Safari。

它可用于自动执行各种任务,例如Web测试、Web抓取和用户验收测试。

简单地说,WebDriver是一个应用程序编程接口(API),它以不同的编程语言实现。驱动程序负责Selenium和浏览器之间的通信。

3. 设置Selenium WebDriver项目

要在任何项目中开始使用Selenium,我们需要安装Selenium库和浏览器驱动程序。我们可以通过将其依赖项添加到pom.xml使用Maven安装Selenium库:

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>4.8.3</version>
</dependency>

此外,要安装浏览器驱动程序,我们将使用驱动程序管理软件。WebDriverManager是一个提供此功能的Java库,让我们将其依赖项添加到pom.xml:

<dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>5.3.2</version>
</dependency>

或者,我们可以从Selenium官方网站下载浏览器驱动程序。下载驱动程序后,我们需要解压它,将它放在项目根目录中,并在代码中指向它的位置。

在下一节中,我们将使用Selenium脚本检索DuckDuckGo主页中输入字段的值。

4. 使用Selenium WebDriver检索HTML输入值

首先,我们将检索DuckDuckGo的搜索字段中的输入值。主页将作为我们的示例HTML页面。它有一个ID为“search_form_input_homepage”的输入字段,用于输入搜索查询。

接下来,让我们编写一个Selenium脚本来检索输入字段的值:

class SeleniumWebDriverUnitTest {

    private WebDriver driver;
    private static final String URL = "https://duckduckgo.com";
    private static final String INPUT_ID = "search_form_input_homepage";

    @BeforeEach
    public void setUp() {
        WebDriverManager.chromedriver().set();
        driver = new ChromeDriver();
    }

    @AfterEach
    public void tearDown() {
        driver.quit();
    }

    @Test
    public void givenDuckDuckGoHomePage_whenInputHelloWorld_thenInputValueIsHelloWorld() {
        driver.get(URL);
        WebElement inputElement = driver.findElement(By.id(INPUT_ID));
        inputElement.sendKeys(Keys.chord(Keys.CONTROL, "a"), Keys.DELETE);
        inputElement.sendKeys("Hello World!");
        String inputValue = inputElement.getAttribute("value");

        assertEquals("Hello World!", inputValue);
    }
}

在上面的示例中,我们创建了一个WebDriver实例来控制Chrome Web浏览器。然后,我们使用WebDriver实例导航到URL为https://duckduckgo.com的网页。

此外,我们在WebDriverManager上调用chromedriver().set()来设置浏览器驱动程序。它会自动为我们下载并设置Chrome驱动程序。此外,我们将驱动程序初始化为ChromeDriver对象,这有助于调用Chrome浏览器。

接下来,我们通过调用driver上的get()方法导航到URL。然后,我们创建一个名为inputElement的WebElement变量,并通过其id找到输入元素并将其分配给inputElement。WebElement是表示Selenium WebDriver中HTML元素的接口。它提供了多种与元素交互的方法,例如sendKeys()、getText()等。我们可以使用不同的定位器策略来查找Web元素,例如id、name或xpath。

此外,我们从代码中模拟浏览器清空输入框,输入”Hello World!”作为输入值。然后,我们创建一个String类型的变量inputValue,并使用参数“value”调用inputElement上的getAttribute()方法,并将其分配给inputValue。

此外,我们还有tearDown()方法,该方法关闭浏览器窗口并释放ChromeDriver对象使用的资源。

最后,我们断言预期结果等于来自具有指定输入id的网页的输入值。

5. 总结

在本文中,我们首先了解了如何使用驱动管理软件安装Selenium浏览器驱动程序以及如何手动下载它。然后,我们学习了如何使用Selenium WebDriver从HTML网页获取输入值。

与往常一样,本教程的完整源代码可在GitHub上获得。

Show Disqus Comments

Post Directory

扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章