1.介绍

本文是一种快速,实用的合作介绍和写作测试junit.testng.

2.硒的集成

在本节中,我们将从简单的方案开始 - 打开浏览器窗口,导航到给定的URL并查找页面上的某些所需内容。

2.1。Maven依赖项

pom.xml文件,添加以下依赖项:

<依赖> < groupId > org.seleniumhq。selenium selenium-java 3.4.0 

最新版本可以在Maven中央存储库

2.2.硒的配置

首先,创建一个新的Java类文件SeleniumConfig

public class SeleniumConfig {private WebDriver驱动;/ /……}

鉴于我们使用Selenium 3.x版本,我们必须指定可执行文件的路径GeckoDriver文件(基于您的操作系统)使用一个名为webdriver.gecko.driver.最新版本的GeckoDriver可以从以下网站下载Github Geckodriver版本

现在让我们初始化WEWDRIVER.在构造函数中,我们还将设置5秒作为超时WEWDRIVER.等待页面上的元素显示:

public seleniumconfig(){功能能力= lausenceCapabilities.firefox();司机=新的FirefoxDriver(能力);driver.Manage()。Timeouts()。ImplicitLywait(5,TimeUnit.seconds);静态{system.setProperty(“webdriver.gecko.driver”,findfile(“geckocriver.mac”));静态私有字符串FindFile(String Filename){String路径[] = {“”,“bin /”,“target / classes”};for(String路径:路径){if(new file(path + filename).exists())返回路径+文件名;} 返回 ””;}

这个配置类包含两个我们将暂时忽略的方法,但是我们将在本系列的第二部分中看到更多关于这些方法的内容。金宝搏官网188be

接下来,我们需要实施一个Seleniumexample.班级:

public class SeleniumExample {private SeleniumConfig config;private String url = "http://www.金宝搏188体育baeldung.com/";public SeleniumExample() {config = new SeleniumConfig();config.getDriver () . get (url);} / /……}

在这里,我们将初始化SeleniumConfig并设置导航到的所需URL。同样,我们将实现一个简单的API来关闭浏览器并获取页面的标题:

public void closewindow(){this.config.getdriver()。关闭();public string gettitle(){返回this.config.getdriver()。gettitle();}

为了导航到baeldung.com的关于部分,我们需要创金宝搏官网188be建一个金宝搏188体育closeOverlay ()方法检查并关闭主页加载上的覆盖层。之后,我们使用金宝搏188体育金宝搏官网188beget金宝搏官网188beabout金宝搏188体育baeldungpage()方法:

public void get金宝搏官网188beabout金宝搏188体育baeldungpage(){trelseltoverlay();click金宝搏官网188beaboutlink();click金宝搏官网188beababoutuslink();private void testractatlay(){list  webelementlist = this.config.getdriver().findElements(by.tagname(“a”));if(WebElementList!= null){webelementlist.stream().filter(webElement  - >“close”.qualsignorecase(webelement.getAttribute(“标题”))).Filter(WebElement :: IsDisplayed).findany().ifpresent().ifpresent(WebElement ::点击);私有void clickaboutlink(金宝搏官网188be){操作操作=新操作(config.getdriver());WebElement 金宝搏官网188beAbylement = this.config.getDriver().findElement(by.id(“Menu-Item-6138”));Actions.MovetoElement(金宝搏官网188beaboutelement).perform();私有void clickaboubabo金宝搏官网188beutuslink(){webelement元素= this.config.getdriver().findElement(by.partiallinktext(“关于baeldung。));金宝搏188体育元素。单击(); }

我们可以检查所需信息是否在显示的页面上提供:

public boolean isAuthorInformationAvailable(){返回this.config.getDriver() .getPageSource() .contains("嘿!我是尤金”);}

接下来,我们将与JUnit和Testng一起测试此类。

3.与JUnit

让我们创建一个新的测试类SeleniumWithJUnitLiveTest:

public class SeleniumWithJUnitLiveTest {private static SeleniumExample;private String expectedTitle = "金宝搏官网188beAbout 金宝搏188体育Baeldung | Baeldung";//更多的代码在这里…}

我们要用BeforeClass诠释org.junit.beforeclass.进行初始设置。在这个设置()我们将要初始化的方法Seleniumexample.目的:

@BeforeClass public static void setUp() {seleniumExample = new seleniumExample ();}

以类似的方式,当我们的测试用例完成时,我们应该关闭新打开的浏览器。我们要用@AfterClass注释 - 在测试案例执行完成后清理设置:

@AfterClass public static void tearDown() {seleniumExample.closeWindow();}

请注意,静态修饰符在我们Seleniumexample.成员变量 - 因为我们需要在中使用此变量设置()tearDown ()静态方法,@课前@AfterClass只能在静态方法上调用。

最后,我们可以创建完整的测试:

@Test public void when金宝搏官网188beAbout金宝搏188体育BaeldungIsLoaded_thenAboutEugenIsMentionedOnPage() {seleniumExample.getAboutBaeldungPage();字符串actualTitle = seleniumExample.getTitle();assertNotNull (actualTitle);assertequal (expectedTitle actualTitle);assertTrue (seleniumExample.isAuthorInformationAvailable ());}

这个测试方法断言网页的标题不是和预期的一样。除此之外,我们还检查页面是否包含预期的信息。

当测试运行时,它只是在Firefox中打开URL,然后在验证了网页的标题和内容之后关闭它。

4.用testng.

现在让我们使用TestNG来运行我们的测试用例/套件。

请注意,如果您正在使用Eclipse,则可以从Eclipse市场

首先,让我们创建一个新的测试类:

public class SeleniumWithTestNGLiveTest {private SeleniumExample;private String expectedTitle = "金宝搏官网188beAbout 金宝搏188体育Baeldung | Baeldung";//更多的代码在这里…}

我们将使用A.@Beforesuite.诠释org.testng.annotations.BeforeSuite我们来实例化SeleniumExample类.这设置()方法将在测试套件被激活之前启动:

@BeforeSuite public void setUp() {seleniumExample = new seleniumExample ();}

类似地,我们将使用@AfterSuite诠释org.tiestng.annotations.aftersuite.在测试套件完成后关闭我们打开的浏览器:

@aftersuite public void teardown(){seleniumexample.closewindow();}

最后,让我们实现我们的测试:

@Test public void when金宝搏官网188beAbout金宝搏188体育BaeldungIsLoaded_thenAboutEugenIsMentionedOnPage() {seleniumExample.getAboutBaeldungPage();字符串actualTitle = seleniumExample.getTitle();assertNotNull (actualTitle);assertequal (expectedTitle actualTitle);assertTrue (seleniumExample.isAuthorInformationAvailable ());}

在成功完成测试套件之后,我们在测试输出项目的文件夹。这些报告总结了测试结果。

5.结论

在这篇简短的文章中,我们重点介绍了如何使用JUnit和TestNG编写Selenium 3测试。

一如既往,可以使用文章的来源在github上。

通用的底部

从Spring 5和Spring Boot 2开始学习的春天课程:

>>看看课程
2评论
最老的
最新
内联反馈
查看所有评论
评论在本文上关闭!