Selenium是一组支持浏览器自动化的工具和库,主要用于Web应用程序测试。 Selenium的组件之一是Selenium WebDriver,它提供客户端库,JSON有线协议(与浏览器驱动程序进行通信的协议)和浏览器驱动程序。 Selenium WebDriver的主要优点之一是,它受所有主要编程语言的支持,并且可以在所有主要操作系统上运行。

在本教程中,我将使用Gradle与Java,JUnit 5和Selenium Jupiter一起完成流行的TodoMVC应用程序的测试自动化项目的设置。 您将了解Selenium的PageFactory实现页面对象模式。 您还将了解并行测试执行,测试执行顺序,参数化测试等等。

关于本教程

您正在阅读带有Selenium WebDriverJUnit 5的第一部分-教程

本教程中的所有文章:

  • 从头开始设置项目–使用JUnit 5和Jupiter Selenium进行Gradle

接下来的是:

  • 使用Selenium内置的PageFactory实现Page Object Pattern
  • 改善项目配置–并行执行测试,测试执行顺序,参数化测试,AssertJ等

该教程的源代码可以在Github上找到

先决条件

首先,Java JDK是必需的,并且必须将其安装在系统中。 由于Java 11中的许​​可更改,我将使用Java 12,并且我建议安装OpenJDK而不是Oracle JDK。您还将需要Gradle来启动一个新项目和您喜欢的Java IDE –我建议使用IntelliJ IDEA Community或Professional。 您也可以选择安装Git版本控制系统。

为了管理(安装,更新,卸载)我建议使用软件包管理器的工具。 如果您使用的是Windows,则可以使用Chocolately ,如果您使用的是macOS,则应使用Homebrew 。

综上所述,在使用本文中的项目时,请确保已安装以下工具并可供您使用:

  • Java JDK –建议使用最新的Java JDK版本
  • Gradle – 在设置项目时需要,建议使用Gradle 5.6+
  • 建议您最喜欢的Java IDE – IntelliJ IDEA社区或专业人士
  • Chrome浏览器–用于运行Selenium测试
  • 终端仿真器–用于执行shell命令,至少对Unix命令具有基本支持。 在Windows中,它可以是Cmder (带有Git),在macOS中,我建议使用iTerm2
  • Git –如果您想跟踪源代码历史记录

从头开始设置项目

要创建一个基于Gradle的空项目,请打开您喜欢的终端并输入:

 mkdir junit5-selenium-todomvc-demo  cd junit5-selenium-todomvc-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: executed 1 

./gradlew命令运行Gradle Wrapper而不是全局Gradle发行版。 该项目是由Gradle Wrapper生成的,因此根本不需要执行全局Gradle分发即可执行任务和使用该项目。

注意:如果您正在寻找用于Gradle或Maven的JUnit 5项目模板,请签出官方的JUnit 5 Samples Github存储库: https : //github.com/junit-team/junit5-samples

JUnit木星

为了简化项目中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/pl/codeleak/demos/selenium/todomvc  touch src/test/java/pl/codeleak/demos/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 )  SeleniumTest { class SeleniumTest { @Test void projectIsConfigured(ChromeDriver driver) {}  } 

运行测试

执行Gradle构建应确认测试通过:

 ./gradlew build  pl.codeleak.demos.selenium.todomvc.SeleniumTest > projectIsConfigured() PASSED  BUILD SUCCESSFUL in 1s  3 actionable tasks: 2 executed, 1 up-to-date 

您可能已经注意到,在执行任务期间,Chrome浏览器已打开,然后关闭。 这仅确认所有驱动程序配置都是由Selenium Jupiter在后台进行的(使用WebDriverManager库)。 您还注意到此测试没有设置和清除代码。 相反,我们 ChromeDriver实例直接注入到需要测试的地方。 Selenium Jupiter就是这样使用JUnit 5扩展机制注入参数进行测试的。

创建Git存储库

项目的初始设置已完成。 在开始实际工作之前,现在可以将项目设置存储在Git存储库中。 如果已安装Git,请运行以下命令来创建新的存储库:

 git init 

编辑.gitignore文件以排除要从存储库中跳过的文件和目录:

 .gradle  .idea  *.iml  build  out 

执行以下命令以将文件添加并提交到存储库:

 git add .  git commit -m 'Initial project setup' 

将项目导入到IDE

请注意,到目前为止,所有工作都是在没有IDE的情况下完成的(不是完全正确–我在IDE的帮助下创建的测试)。 通常,这是项目配置中非常重要的方面:始终使项目IDE独立。 证明您可以使用单个shell命令执行构建。 这将带来收益–特别是当您要使用持续集成工具执行构建时。

无论如何,使用IntelliJ,该项目将毫无问题地运行。 午餐,打开项目目录,并将其导入为Gradle项目。

现在您已经准备好开始开发测试并改善项目。 但是请记住,如果要进行任何配置更改,建议您不时使用IDE外部的终端对其进行测试。

下一步

在本教程的下一部分中,您将学习有关Page Object Pattern的一些基础知识,以及如何使用Selenium的内置PageFactory实现它。

翻译自: https://www.javacodegeeks.com/2019/09/junit-selenium-setup-project-gradle-jupiter-selenium.html

JUnit 5和Selenium –使用Gradle,JUnit 5和Jupiter Selenium设置项目相关推荐

  1. gradle junit5_JUnit 5和Selenium –使用Gradle,JUnit 5和Jupiter Selenium设置项目

    gradle junit5 Selenium是一组支持浏览器自动化的工具和库,主要用于Web应用程序测试. Selenium的组件之一是Selenium WebDriver,它提供客户端库,JSON有 ...

  2. android gradle + junit + jacoco 集成jenkins,sonar系统

    首先gradle 文件配置如下: apply plugin: 'jacoco'android {compileSdkVersion 25buildToolsVersion "25.0.3&q ...

  3. junit 5测试异常处理_使用JUnit 5测试异常

    junit 5测试异常处理 JUnit 5带来了令人敬畏的改进,并且与以前的版本有很大不同. JUnit 5在运行时需要Java 8,因此Lambda表达式可以在测试中使用,尤其是在断言中. 这些断言 ...

  4. python的selenium模块博客园_Python学习--Selenium模块学习(2)

    Selenium的基本操作 获取浏览器驱动寻找方式 1. 通过手动指定浏览器驱动路径 2. 通过 `$PATH`环境变量找寻浏览器驱动 控制浏览器访问URL find系列函数定位元素 - `find_ ...

  5. selenium自动化测试_为什么在生产中进行Selenium自动化测试对于您的下一个版本至关重要?...

    selenium自动化测试 您是否认为仅仅是因为您的Web应用程序在过渡环境中以飞快的速度通过,它对于生产环境也将是相同的? 您可能需要重新考虑! 特别是,如果我们指的是跨浏览器测试 ,则需要确保跨各 ...

  6. 网络爬虫--25.【selenium实战】实现拉勾网爬虫之--selenium获取数据

    代码实现 #encoding: utf-8from selenium import webdriver from lxml import etree import re import time fro ...

  7. selenium ruby和java_针对Ruby的Selenium WebDriver安装指南

    Selenium 1.x时代已经远去,它理应躺在历史的角落里,靠着壁炉烤着火,抽着旱烟,在袅袅的升起的青烟中回忆那曾经属于自己的美好时代. 不过事实却并非如此,现今原本早应退役的selenium 1. ...

  8. selenium小练习:自写利用 selenium 下载Google高清图片、大众点评自动传头像/评论

    一. selenium 下载高清图片 1.版本介绍 python 3.7.4 selenium = 3.141.0 chromedriver=84.0.4147.30 2.保存 base64 图片格式 ...

  9. gradle插件获取所有源码依赖项目目录

    gradle插件获取所有源码依赖项目目录 class TestPlugin implements Plugin<Project> {@Overridevoid apply(Project ...

最新文章

  1. java 读取远程文件夹_java读取远程共享文件 | 学步园
  2. pipe 双管道 简易实现代码
  3. 程序与进程的区别,并发与并行的区别,多进程的实现原理
  4. 图解Oracle 12c创建数据挖掘(Data Miner)用户dmuser
  5. ubuntu 运行python subprocess 出现/bin/sh: 1: source: not found 错误
  6. 【拥抱大厂系列】面试官100%会严刑拷打的 CMS 垃圾回收器,下次面试就拿这篇文章怼回去!
  7. JVM调优:G1三色标记算法
  8. 【已解决】surefire-reports for the individual test results.
  9. 应用性能问题解决实际案例
  10. api idea 开发rest_部分介绍使用IDEA的rest client
  11. 【黄金分割点】与【斐波那契数列】
  12. STL之string
  13. GCD nyoj1007(欧拉函数运用数论入门)
  14. Power Integrations推出的全新CAPZero-3 X电容放电IC符合IEC60335标准
  15. UE4 GamePlay架构学习篇
  16. DSP CCS3.3安装问题与解决方案
  17. GitChat · 软件工程 | 一小时教你学会 Maven 项目的构建与管理
  18. 双系统双硬盘的linux引导,双硬盘双系统Grub引导的配置
  19. 关于C#英文注释改成中文注释
  20. oracle的账户无法注册表,oracle用户账号在哪注册表ORA-12514问题解决

热门文章

  1. P3370-[模板]字符串哈希【hash】
  2. Wannafly挑战赛19
  3. 汇编语言(二十)之分类统计字符个数
  4. JS 获取浏览器、显示器 窗体等宽度和高度
  5. 上机不会做?在讲台上做做试试!
  6. 20级四班班级管理规章制度
  7. ReactiveLodeBalancerClientFilter响应式负载均衡代理
  8. nacos 读取纯数字字符 出错 @value
  9. 车提示检测轮胎气压_水淹车估价中心_辽宁中车检
  10. oracle 10741 trace,RedHat5.3上安装Oracle 10.2.0.1