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。然后,我们创建一个名为inputElement的WebElement变量,并通过其id找到输入元素,并将其赋值给inputElement。WebElement是Selenium WebDriver中的一个接口,它代表了HTML元素。它提供了与元素交互的各种方法,如sendKeys(), getText(), 等等。我们可以使用不同的定位策略,如id、name或xpath*来查找web元素。
此外,我们在代码中模拟浏览器,清空输入字段并输入“Hello World!”作为输入值。然后,我们创建一个类型为String的inputValue变量,并在inputElement上调用getAttribute()方法,参数为“value”,并将结果赋值给inputValue。
另外,我们还有tearDown()方法,它关闭浏览器窗口并释放由ChromeDriver对象使用的资源。
最后,我们断言预期结果与具有指定输入id的网页上的输入值相等。
5. 总结
在这篇文章中,我们首先了解了如何使用驱动管理软件安装Selenium浏览器驱动,以及如何手动下载。然后,我们学习了如何使用Selenium WebDriver从HTML网页获取输入值。
如往常一样,示例的完整源代码可以在GitHub上找到。