在本文中,将向展示如何在Java环境中使用Eclipse IDE进行WebDriver测试,包括如何编写并运行一个简单的测试。将讨论需要的组件,如何安装Eclipse,以及如何设置项目以进行测试。
要在Java中使用Eclipse运行WebDriver测试,需要以下组件:
在Eclipse中添加依赖项有多种方法。常见的依赖管理器包括Maven和Gradle。旧版本的本文通过手工添加依赖项。
Eclipse是Java开发中最受欢迎的开发环境之一。它是由Eclipse基金会维护的开源项目,拥有大量的插件、工具和支持。可以从下载适合操作系统的最新版本的Eclipse。在示例中,将选择"Eclipse IDE for Java Developers"。
安装程序将保存到本地驱动器或浏览器的"下载"目录中。下载并运行它。
安装Eclipse后,可以自由地自定义它。有大量的主题和编辑器调整可供选择,这些选择来自更大的社区和Eclipse Marketplace()。
Eclipse使用工作区的概念 - 在其中工作项目的文件夹和空间。在这个示例中,使用了一个现有的工作区,其中有几个不同的小型示例项目。团队对工作区和项目结构有不同的方法。对于自己的小型示例项目,可以使用喜欢的任何方法;然而,请确保遵循团队的实际工作模式。(工作区和项目结构的讨论几乎和制表符与空格的讨论一样激烈。请保持友善。)
本文使用了一个简单的Java项目,通过点击打开屏幕的"创建新的Java项目"创建。
在新的Java项目对话框中填写基本信息 - 确保JRE环境版本为14或更高 - 然后点击完成继续。
各种驱动程序依赖于其他库,有时这些库依赖于其他库。与其手工下载和安装它们,不如使用Maven,这是一个依赖注册和管理服务。将为ChromeDriver添加一个条目,为JUnit("Jupiter")添加另一个条目,然后就可以开始了。所以右键点击项目,选择配置,然后转换为Maven项目。点击随后的"创建新的POM对话框"上的完成,以创建pom.xml文件。
现在在包资源管理器的左下角,将看到一个pom.xml。将通过在和之间添加依赖项XML片段,将JUnit Jupiter和Webdriver的引用添加到POM中。以下是代码片段(以下代表使用JUnit 5.7.0和Selenium 4的环境):
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.7.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.0.0-alpha-7</version>
</dependency>
</dependencies>
在继续之前,快速回顾一下WebDriver的组成是有帮助的。WebDriver由许多不同的组件组成,清楚需要哪些部分是很重要的。Selenium HQ页面介绍WebDriver有详细介绍WebDriver的工作原理。应该阅读它;然而,这里有一个简化版本:
WebDriver的最低级别组件是一个浏览器驱动程序,它通过该浏览器的自动化接口直接操作浏览器。这是一个程序,库将调用它。浏览器供应商(Microsoft、Mozilla、Google等)处理他们自己浏览器内部的细节,这意味着制作浏览器的人也在处理该特定浏览器的自动化机制。浏览器驱动程序的名称是ChromeDriver(对于Chrome)、Geckodriver(对于Firefox)、SafariDriver(对于Safari)和InternetExplorer Driver和MS Edge Driver(IE和Edge分别)。将它们放置在一个包含在环境PATH中的目录中,这样无论在哪个工作目录中,命令行调用程序都将执行它们。
对于本教程,安装适合环境的ChromeDriver。
Selenium服务器是一个组件,用于在远程机器上运行WebDriver实例。Selenium服务器也是使用Grid配置时的中心枢纽。当使用Sauce Labs时,Sauce可以提供整个网格;只需让测试隧道连接即可。如果没有Sauce Labs账户(如果没有,请开始一个免费试用)。
对于本教程,将本地运行测试,因此不需要运行服务器。
如前所述,将WebDriver包含在Eclipse项目中有许多方法。已经通过将WebDriver添加到pom.xml文件作为依赖项(selenium-java)完成了这项工作。
WebDriver除了与浏览器驱动程序交谈外,不知道如何做任何事情。因此,将需要某种测试框架来执行测试,进行断言并报告测试状态。将使用JUnit,因为A)它非常受欢迎,B)它包含在Eclipse的默认安装中。
通过右键点击 => 新建 => JUnit测试用例,将测试用例添加到Eclipse项目中。在结果对话框中给测试用例起一个好名字,然后点击完成以创建文件。注意使用了这个测试用例的默认命名空间 - Eclipse正确地抱怨了这一点。再次,请保持友善。遵循团队的标准实践进行项目组织和命名。可能会将文件放在错误的目录中,或者拼写错误。将重新做这个努力几次不视为浪费,而是作为良好的实践。
右键点击项目,Build Path,Add Libraries,添加JUnit,然后点击完成 - 在随后的对话框中选择JUnit 5的库版本,然后点击完成。右键点击项目,选择新建,然后新建JUnit Jupiter测试。确保不要使用默认包(如果需要,请创建一个新包),给它起一个好名字,然后点击完成。会发现第一个测试用例已经设置好并准备好编写。
下面是一个完整的测试用例,它在本地启动一个浏览器,执行一个非常简单的测试,然后关闭浏览器实例。示例非常简单,不遵循使用页面对象模式等正常实践。这是示例代码,不是生产代码!
会注意到测试用例需要设置属性以指向Chromedriver文件的位置;需要更改此设置。在Windows中,这看起来像"c:\somedirectory\chromedriver.exe",在Linux和Mac shell中,不需要尾随.exe,将直接指向二进制文件。
package org.seleniumhq.selenium.selenium_java;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
class SauceLabsHomePageTest {
@Test
public void site_header_is_on_home_page() {
System.setProperty("webdriver.chrome.driver", "/where/you/put/chromedriver");
WebDriver browser = new ChromeDriver();
browser.get("https://www.saucelabs.com");
WebElement href = browser.findElement(By.xpath("//a[@href='https://accounts.saucelabs.com/']"));
assertTrue((href.isDisplayed()));
browser.close();
}
}
通过在测试主体上右键点击并选择运行为 => JUnit测试来运行测试。