news 2026/6/10 16:10:00

Eclipse+maven+selenium自动化测试用例入门

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Eclipse+maven+selenium自动化测试用例入门

相关的开发环境搭建参考以下文章:

Eclipse+maven+selenium自动化测试开发环境搭建

确认环境搭建成功后,在src/test/java目录下,defaut package右键新建class,命名为:GoogleTest,相关代码如下:

import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; import io.github.bonigarcia.wdm.WebDriverManager; import java.time.Duration; public class GoogleTest { WebDriver driver; @BeforeEach void setup() { WebDriverManager.chromedriver().setup(); driver = new ChromeDriver(); } @Test void googleSearchTest() { driver.get("https://www.google.com"); //element search driver.findElement(By.name("q")).sendKeys("Selenium WebDriver"); driver.findElement(By.name("q")).submit(); //Explicit Wait WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10)); wait.until(ExpectedConditions.titleContains("Selenium WebDriver")); //assert assertTrue(driver.getTitle().contains("Selenium")); } @AfterEach void tearDown() { driver.quit(); } }

@BeforeEach中的setup方法初始化webdriver,这两行代码必不可少,否则可能出现意想不到的错误。

WebDriverManager.chromedriver().setup();

driver = new ChromeDriver();

@Test中开始真正的测试了。

driver.get("https://www.google.com"); //打开google主页

driver.findElement(By.name("q")).sendKeys("Selenium WebDriver"); //找到搜索框,并输入Selenium WebDriver

driver.findElement(By.name("q")).submit(); //相当于回车执行搜索

WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10)); //设置显式等待,等待时间为10秒,当然3秒、5秒也可以。

wait.until(ExpectedConditions.titleContains("Selenium WebDriver")); //在10秒内等待,直到页面出现期待结果,包含Selenium WebDriver的信息。

assertTrue(driver.getTitle().contains("Selenium")); //断言设置结果为:网页title包含Selenium,测试通过。

@AfterEach中设置销毁driver,释放资源。更加严谨的逻辑是先判断driver是否还存在,如果存在执行driver.quit(); 这里不加赘述,自行研究。

void tearDown() {

driver.quit();

}

以上代码没有语法问题后,在GoogleTest.java点击右键,run as—>junit test

可以看到执行成功。到这里自动化测试算是入门了一条腿了。

到这里,我们可以发现,如果每个测试class都加上@BeforeEach,@AfterEach,并且Test中元素查找、页面等待都包含在内的话,代码显得臃肿,且维护复杂。如果将@BeforeEach @AfterEach等提取出去,并且把测试相关的页面、元素查找、用例成功的要素等单独封装到其他的类中,测试类就只关注测试步骤,这样测试就变得容易维护了。这里也就是常说的Page Obejcet Model页面对象模型。接下来会继续发布POM相关的实践过程。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/5 14:09:22

11、高级内存取证:游戏数据定位与更新应对

高级内存取证:游戏数据定位与更新应对 1. 定位玩家生命值地址 在游戏中,我们常常需要定位特定数据的地址,比如玩家的生命值。以如下代码为例: struct PlayerVital {int current, maximum; }; PlayerVital health; // ... printString("Health: %d of %d\n", …

作者头像 李华
网站建设 2026/6/10 15:14:04

Kotaemon太极拳动作指导:视频+文字说明

Kotaemon太极拳动作指导:视频文字说明 在传统武术教学中,一个常见的难题是——学员记不住动作顺序,看不清细节要领,教练又无法随时答疑。尤其是在“云手怎么接单鞭”、“白鹤亮翅后重心如何转移”这类具体问题上,文字教…

作者头像 李华
网站建设 2026/6/9 21:07:23

23、编写自主机器人:综合实践

编写自主机器人:综合实践 在游戏自动化开发中,将控制理论与状态机结合,能让机器人实现自主行为。下面将详细介绍如何实现这一过程,以及相关的技术和代码。 1. 结合控制理论和状态机 为了将状态与反馈循环联系起来,需要为每个 StateDefinition 对象提供一种通用方式来…

作者头像 李华
网站建设 2026/6/10 15:17:16

2、GNU Make 基础深入解析

GNU Make 基础深入解析 变量导出与取消导出规则 在使用变量的导出(export)和取消导出(unexport)时,遵循“最后指令生效”原则。例如,若多次对同一变量进行导出和取消导出操作,最后一次的指令会决定变量的状态。 导出指令还能与特定目标变量结合,为特定规则修改环境。…

作者头像 李华
网站建设 2026/6/10 15:15:25

46、远程访问策略规划与基础设施搭建全解析

远程访问策略规划与基础设施搭建全解析 1. 远程访问策略规划基础 远程访问允许用户在非本地网络环境下连接到企业网络或互联网。常见的远程访问方式有以下几种: - 交换式远程客户端 :通过物理连接与远程访问服务器相连,借助电信基础设施建立连接。 - VPN 客户端 :利…

作者头像 李华
网站建设 2026/6/10 0:17:35

Kotaemon重排序模型集成:Cross Encoder精排实战

Kotaemon重排序模型集成:Cross Encoder精排实战 在构建企业级智能问答系统时,一个常见的尴尬场景是:用户提出明确问题,系统返回的答案看似流畅却张冠李戴——内容来自知识库,但并非最相关的片段。这种“差之毫厘、谬以…

作者头像 李华