1. 概述

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

在这个教程中,我们将学习如何设置一个Selenium项目,并从网页上获取HTML输入字段的值。

2. Selenium WebDriver是什么?

Selenium WebDriver是一个开源自动化测试框架,它可以原生驱动Web浏览器,就像真实用户一样与之交互。它支持包括Chrome、Firefox、Edge和Safari在内的多种浏览器。

它可以用于自动化各种任务,如Web测试、网络爬虫和用户接受度测试。

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

3. 设置Selenium WebDriver项目

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

<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");
        Assert.assertEquals("Hello World!", inputValue);
    }
}

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

我们还调用webdriverManager.chromedriver().setup()WebDriverManager上设置浏览器驱动。它会自动下载并设置Chrome驱动。然后,我们初始化一个ChromeDriver对象,这有助于启动Chrome浏览器。

接下来,我们使用driver.get()方法导航到URL。然后,我们创建一个名为inputElementWebElement变量,并通过其id找到输入元素,并将其赋值给inputElementWebElement是Selenium WebDriver中的一个接口,它代表了HTML元素。它提供了与元素交互的各种方法,如sendKeys(), getText(), 等等。我们可以使用不同的定位策略,如idnamexpath*来查找web元素。

此外,我们在代码中模拟浏览器,清空输入字段并输入“Hello World!”作为输入值。然后,我们创建一个类型为StringinputValue变量,并在inputElement上调用getAttribute()方法,参数为“value”,并将结果赋值给inputValue

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

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

5. 总结

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

如往常一样,示例的完整源代码可以在GitHub上找到。