JUnit 5和Selenium基础(一)
Gradle、JUnit 5和Jupiter Selenium
Selenium是一组支持浏览器自动化的工具,主要用于Web应用程序测试。Selenium的组件之一是Selenium WebDriver,它提供客户端库,JSON有线协议(与浏览器驱动程序进行通信的协议)和浏览器驱动程序。Selenium WebDriver的主要优点之一是,它几乎支持所有主要编程语言,并且可以在所有主流操作系统上运行。
在本文中,将使用Gradle与Java,JUnit 5和Selenium Jupiter一起完成流行的TodoMVC
应用程序的测试自动化项目的设置。您将了解Selenium的PageFactory
实现页面对象模式。您还将了解并行测试执行,测试执行顺序,参数化测试等等。
测试准备
首先,Java JDK是必需的,并且必须将其安装在系统中。我建议安装OpenJDK而不是Oracle JDK。您还需要Gradle
来启动一个新项目和您喜欢的Java IDE –建议使用IntelliJ IDEA Community或Professional,当然也少不了git。
开始之前,确保已安装以下工具并可供您使用:
- Java JDK:建议使用最新的Java JDK版本
- Gradle:仅在设置项目时需要,建议使用Gradle 5.6+
- Java IDE:IntelliJ IDEA
- Chrome浏览器:用于运行Selenium测试
- 终端:用于执行shell命令,至少对Unix命令具有基本支持
- Git:跟踪源代码历史记录
从头开始
要创建一个基于Gradle的空项目,请打开终端并输入:
mkdir demo
cd demo
gradle init --type basic --dsl groovy
生成的项目是一个空的DIY项目:没有插件,也没有依赖项。它带有settings.gradle可以删除的冗余:
rm settings.gradle
Java和JUnit 5
对于使用JUnit 5的基本Java项目配置,将以下内容添加到中build.gradle:
plugins {
id 'java'
}
repositories {
mavenCentral()
}
dependencies {
testImplementation('org.junit.jupiter:junit-jupiter:5.5.1')
}
test {
useJUnitPlatform()
testLogging {
events "passed", "skipped", "failed"
}
}
上面的DSL配置了Gradle
的Java插件(plugins)
,该插件为我们提供了使用Gradle构建基于Java的项目的功能。该项目使用Maven存储库(repositories)
下载在项目dependencies
中声明的项目依赖项()
。将项目的测试实现依赖项设置为JUnit 5(testImplementation)
,并调整任务(test)
,以确保在使用Gradle
执行测试时使用JUnit 5
。
可以通过在终端中执行Gradle构建来验证配置:
./gradlew build
构建成功:
BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed
./gradlew
命令运行Gradle Wrapper而不是全局Gradle发行版。该项目是由Gradle Wrapper生成的,因此根本不需要执行全局Gradle分发即可执行任务和使用该项目。
JUnit Jupiter
为了简化项目中Selenium WebDriver
的配置,我将使用Selenium Jupiter
,它是JUnit 5扩展,旨在简化JUnit 5
测试中对Selenium(WebDriver
和Grid
)的使用。它是一个单独的依赖项,需要添加到以下项的依赖项列表中build.gradle
:
dependencies {
testCompile('io.github.bonigarcia:selenium-jupiter:3.3.0')
}
Selenium Jupiter
库提供了与Selenium
和Appium
的集成。Selenium Jupiter
支持本地和远程浏览器,Docker容器中的浏览器(需要Docker引擎)以及基于Selenide的浏览器配置。它在内部使用WebDriverManager
来管理浏览器驱动程序。
- 注意:不要惊讶于项目中有很多库,Selnium Jupiter有很多依赖性。要查看所有项目依赖项(包括传递性依赖项),请执行以下命令:
./gradlew dependencies
。
目录和项目文件
该项目创建时没有Java源文件。要创建初始目录和第一个测试,可以执行以下命令:
mkdir -p src/test/java/demo/selenium/todomvc
touch src/test/java/demo/selenium/todomvc/SeleniumTest.java
该SeleniumTest.java
文件包含非常基本的测试,确认项目已正确配置。该测试使用Selenium Jupiter
提供的JUnit 5
扩展,并且只有一个测试,没有断言:
package pl.codeleak.demos.selenium.todomvc;
import io.github.bonigarcia.seljup.SeleniumExtension;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.openqa.selenium.chrome.ChromeDriver;
@ExtendWith(SeleniumExtension.class)
class SeleniumTest {
@Test
void projectIsConfigured(ChromeDriver driver) {}
}
运行测试
执行Gradle构建应确认测试通过:
./gradlew build
demo.selenium.todomvc.SeleniumTest > projectIsConfigured() PASSED
BUILD SUCCESSFUL in 1s
3 actionable tasks: 2 executed, 1 up-to-date
- 郑重声明:文章首发于公众号“FunTester”,禁止第三方(腾讯云除外)转载、发表。
技术类文章精选
- java一行代码打印心形
- Linux性能监控软件netdata中文汉化版
- 性能测试框架第二版
- 如何在Linux命令行界面愉快进行性能测试
- 图解HTTP脑图
- 将swagger文档自动变成测试代码
- 基于java的直线型接口测试框架初探
- Selenium 4.0 Alpha更新日志
- Selenium 4.0 Alpha更新实践
- 如何统一接口测试的功能、自动化和性能测试用例
非技术文章精选
- 为什么选择软件测试作为职业道路?
- 写给所有人的编程思维
- 成为自动化测试的7种技能
- 如何在DevOps引入自动化测试
- Web端自动化测试失败原因汇总
- 如何在DevOps引入自动化测试
- 测试人员常用借口
- API测试基础
- API自动化测试指南
- 未来的QA测试工程师
JUnit 5和Selenium基础(一)的更多相关文章
- JUnit 5和Selenium基础(三)
在这一部分教程中,将介绍JUnit 5的其他功能,这些功能将通过并行运行测试,配置测试顺序和创建参数化测试来帮助减少测试的执行时间.还将介绍如何利用Selenium Jupiter功能,例如通过系统属 ...
- JUnit 5和Selenium基础(二)
使用Selenium内置的PageFactory实现页面对象模式 在这一部分中,将通过Selenium的内置PageFactory支持类来介绍Page Object模式的实现.PageFactory提 ...
- 「译」JUnit 5 系列:基础入门
原文地址:http://blog.codefx.org/libraries/junit-5-basics/ 原文日期:25, Feb, 2016 译文首发:Linesh 的博客:JUnit 5 系列: ...
- 【Python爬虫】selenium基础用法
selenium 基础用法 阅读目录 初识selenium 基本使用 查找元素 元素互交操作 执行JavaScript 获取元素信息 等待 前进后退 Cookies 选项卡管理 异常处理 初识sele ...
- Selenium | 基础入门 | 截屏并保存于本地
可先参考 Selenium | 基础入门 | 利用Xpath寻找用户框 核心代码: //截屏操作 File srcFile = ((TakesScreenshot)driver).getScree ...
- web 自动化测试 selenium基础到应用(目录)
第一章 自动化测试前提及整体介绍 1-1功能测试和自动化测试的区别 1-2自动化测试流程有哪些 1-3自动化测试用例和手工用例的区别 1-4 自动化测试用例编写 1-5 selenium的优势以及 ...
- selenium基础-图形验证码
selenium基础-图形验证码 一.图形验证码作用 设计的初衷其实就是为了防自动化,防止一些人利用自动工具恶意攻击网站 二.图形验证码是由客户端生成还是由服务器端生成的? 图形验证码是由服务器端生成 ...
- selenium基础-跳过验证码
selenium基础-跳过验证码 一.方法 设置万能验证码或者屏蔽验证码(最常用的方法) 使用验证码识别工具识别验证码 通过selenium操作cookies 直接使用配置文件的webdriver 二 ...
- selenium基础(下拉菜单操作)
selenium基础(下拉菜单操作) 非select/option元素: 1.触发下拉列表出现 2.等待下拉列表中的元素出现,然后进行选择元素即可. select/option元素: 下拉框操作-Se ...
随机推荐
- DOMjudge配置
DOMjudge配置补充 系统环境为 Debbian GNU/Linux 9 (stretch) 64-bit 在Web server configuration中, ln -s etc/apache ...
- HDU 2546 01背包问题
这里5元是个什么意思呢.差不多就是特殊情况了. 就是说最贵的那个东西先不买.并且最后要留下5元去买那个最贵的. 也就是说对现在金钱-5 拿剩下的钱去对减去最贵的商品后的商品dp.看这些剩下的钱能买多少 ...
- H3C 帧中继与水平分割
- H3C CHAP验证
- [转]来自后端的逆袭 blazor简介 全栈的福音
背景 什么是SPA 什么是MPA MPA (Multi-page Application) 多页面应用指的就是最传统的 HTML 网页设计,早期的网站都是这样的设计,所之称为「网页设计」.使用 MPA ...
- codeforces 616D
题意:给你n个数,找出一个最大的区间,满足:不同的数值个数不超过k; //我开始又看错题了. 以为是找出一个最大区间,里面的数的最大值不超过k; 思路:利用一个窗口滑动,左端点表示当前位置,右端点表示 ...
- HDU 3746 Cyclic Nacklace(kmp next数组运用)
Cyclic Nacklace Problem Description CC always becomes very depressed at the end of this month, he ha ...
- promise 讲解
Promise的出现 解决了 js 回调地狱得问题 回调地狱图 Promise解决回调地狱 是不是美观多了.. 实例化Promise时传入方法里的两个参数 resolve(成功的回调)和reject ...
- Linux 内核注册一个 USB 驱动
所有 USB 驱动必须创建的主要结构是 struct usb_driver. 这个结构必须被 USB 驱动填 充并且包含多个函数回调和变量, 来向 USB 核心代码描述 USB 驱动: struct ...
- APK签名替换检测
APK二次打包的危害 APK二次打包是Android应用安全风险中的一部分, 一般是通过反编译工具向应用中插入广告代码与相关配置,再在第三方应用市场.论坛发布.打包党对移动App带来的危害有以下几种: ...