news 2026/5/10 15:40:25

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/5/10 15:39:57

Kotaemon在政务智能问答中的合规性设计考量

Kotaemon在政务智能问答中的合规性设计考量 在政务服务日益智能化的今天,公众对AI助手的期待早已超越了“能答上来”,而是要求它“答得准、说得清、可追溯”。一个回答错误可能误导市民错过申报时限,一次数据泄露可能动摇公众对数字政府的信任…

作者头像 李华
网站建设 2026/5/9 13:05:40

Kotaemon支持批量导入知识文档并自动索引

Kotaemon支持批量导入知识文档并自动索引 在企业智能化转型的浪潮中,一个常见却棘手的问题浮出水面:如何让AI真正“懂”企业的内部知识?客服机器人面对新产品手册答非所问,技术支持系统对最新政策变更毫无反应——这些并非模型能力…

作者头像 李华
网站建设 2026/5/9 13:06:07

18、游戏中的控制流操作与Direct3D钩子技术

游戏中的控制流操作与Direct3D钩子技术 1. Adobe AIR模块钩子实现 在游戏开发与调试过程中,有时需要对特定模块的代码进行钩子操作,以监控或修改其行为。这里以Adobe AIR.dll模块为例,介绍如何实现钩子。 1.1 两部分近调用钩子设计 设计了一个两部分的近调用钩子。第一部…

作者头像 李华
网站建设 2026/5/9 13:05:40

20、游戏透视与视野拓展技巧揭秘

游戏透视与视野拓展技巧揭秘 在游戏世界中,玩家们总是希望能够获得更多的信息和优势,以提升自己的游戏体验和竞技水平。本文将深入探讨几种常见的游戏作弊技巧,包括穿墙透视、变焦透视、抬头显示(HUD)等,以及它们的原理和实现方法。 1. Z缓冲与穿墙透视 在游戏渲染中,…

作者头像 李华
网站建设 2026/5/9 11:16:36

Kotaemon多路召回策略设计:dense+sparse+colbert

Kotaemon多路召回策略设计:densesparsecolbert 在构建智能问答系统时,我们常常面临一个核心矛盾:大模型虽然能“说”,但未必“知道”。尤其是在企业级场景中,用户的问题往往涉及具体政策、产品条款或专业术语&#xf…

作者头像 李华
网站建设 2026/5/9 13:06:31

Kotaemon支持自定义评分函数:精细化控制生成质量

Kotaemon支持自定义评分函数:精细化控制生成质量 在金融、医疗和法律等高风险领域,一个看似流畅却暗藏错误的回答可能引发严重后果。传统大语言模型应用常陷入“生成即输出”的被动模式,缺乏对内容质量的主动把控机制。当企业级智能系统需要同…

作者头像 李华