SpringBoot中Selenium详解
文章目录
- SpringBoot中Selenium详解
- 一、引言
- 二、集成Selenium
- 1、环境准备
- 1.1、添加依赖
- 2、编写测试代码
- 2.1、测试主类
- 2.2、页面对象
- 2.3、搜索组件
- 三、使用示例
- 四、总结
SpringBoot中Selenium详解
一、引言
在现代软件开发中,自动化测试是提高软件质量、减少重复工作的重要手段。Selenium 是一个强大的自动化测试工具,它支持多种编程语言和浏览器,能够模拟用户对网页的操作。Spring Boot 作为一个轻量级的Java应用框架,与 Selenium 结合可以极大地提高开发效率和测试的便利性。本文将详细介绍如何在 SpringBoot 中集成 Selenium,并给出具体的代码示例。
二、集成Selenium
1、环境准备
在开始之前,确保你已经安装了Java开发环境和Maven构建工具。你还需要下载对应版本的ChromeDriver或GeckoDriver,以便Selenium能够控制浏览器。
1.1、添加依赖
在SpringBoot项目的pom.xml
文件中添加Selenium和TestNG的依赖:
<dependencies>
<!-- selenium -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
<!-- TestNG -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>RELEASE</version>
<scope>compile</scope>
</dependency>
</dependencies>
2、编写测试代码
2.1、测试主类
创建一个测试类,继承SpringBaseTestNGTest,并注入页面对象和截图工具:
package com.et.selenium;
import com.et.selenium.page.google.GooglePage;
import com.et.selenium.util.ScreenShotUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.testng.Assert;
import org.testng.annotations.Test;
import java.io.IOException;
public class GoogleSearch1Test extends SpringBaseTestNGTest {
@Autowired
private GooglePage googlePage;
@Lazy
@Autowired
private ScreenShotUtil screenShotUtil;
@Test
public void GoogleTest() throws IOException, InterruptedException {
this.googlePage.goToGooglePage();
Assert.assertTrue(this.googlePage.isAt());
this.googlePage.getSearchComponent().search("spring boot");
Assert.assertTrue(this.googlePage.getSearchResult().isAt());
Assert.assertTrue(this.googlePage.getSearchResult().getCount() > 2);
System.out.println("Number of Results: " + this.googlePage.getSearchResult().getCount());
Thread.sleep(3000);
this.screenShotUtil.takeScreenShot("Test.png");
this.googlePage.close();
}
}
2.2、页面对象
创建GooglePage页面对象,包含打开页面和获取搜索组件的方法:
package com.et.selenium.page.google;
import com.et.selenium.annotation.Page;
import com.et.selenium.page.Base;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@Page
public class GooglePage extends Base {
@Autowired
private SearchComponent searchComponent;
@Autowired
private SearchResult searchResult;
@Value("${application.url}")
private String url;
public void goToGooglePage() {
this.driver.get(url);
}
public SearchComponent getSearchComponent() {
return searchComponent;
}
public SearchResult getSearchResult() {
return searchResult;
}
@Override
public boolean isAt() {
return this.searchComponent.isAt();
}
public void close() {
this.driver.quit();
}
}
2.3、搜索组件
创建SearchComponent类,包含搜索方法:
package com.et.selenium.page.google;
import com.et.selenium.annotation.PageFragment;
import com.et.selenium.page.Base;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import java.util.List;
@PageFragment
public class SearchComponent extends Base {
@FindBy(name = "q")
private WebElement searchBox;
@FindBy(name="btnK")
private List<WebElement> searchBtns;
public void search(final String keyword) {
this.searchBox.sendKeys(keyword);
this.searchBox.sendKeys(Keys.TAB);
this.searchBtns.stream()
.filter(e -> e.isDisplayed() && e.isEnabled())
.findFirst()
.ifPresent(WebElement::click);
}
@Override
public boolean isAt() {
return this.wait.until(driver1 -> this.searchBox.isDisplayed());
}
}
三、使用示例
上述代码展示了如何在SpringBoot中集成Selenium,并进行了一个简单的Google搜索测试。通过注入页面对象和截图工具,我们可以轻松地对网页进行自动化操作,并在测试完成后保存截图。
四、总结
SpringBoot与Selenium的结合使得自动化测试变得更加简单和高效。通过上述步骤,你可以快速地在你的项目中集成Selenium,并编写自动化测试用例。这不仅提高了测试的覆盖率,也减少了手动测试的工作量。
版权声明:本博客内容为原创,转载请保留原文链接及作者信息。
参考文章:
- Spring Boot集成selenium实现自动化测试_springboot selenium-CSDN博客