1. 介绍Selenium
Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera,Edge等。这个工具的主要功能包括:测试与浏览器的兼容性——测试应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成.Net、Java、Perl等不同语言的测试脚本。
2. 简单Demo
- 下载驱动
chromedriver
request 1
2-- 根据自己chrome的版本并下载相对应的驱动
http://chromedriver.storage.googleapis.com/index.html
配置
chromedriver
Window配置:下载好后解压放到你喜欢的位置,放到D:\Program Files\ChromeDriver文件夹下,记好这个路径配置要用到。接着右键我的电脑==>属性==>高级系统设置==>环境变量==>选中系统变量中的Path,点击编辑,点击新建,把前面提到的文件路径添加进去,点击确定至窗口关闭。
Mac: 使用终端打开即可。
引入依赖,依赖包下载地址
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.8.2</version>
</dependency>
<!-- 用到了@WithMockUser注解 -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 解决报错:com.google.common.util.concurrent.SimpleTimeLimiter.create(Ljava/util/concurrent/ExecutorService;)Lcom/google/common/util/concurrent/SimpleTimeLimiter; -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.1-jre</version>
</dependency>编写测试类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
//设置测试端口号
public class SeleniumTest {
private TestRestTemplate restRestTemplate;
private static ChromeDriver driver;
public static void openBrowser() {
//初始化参数,chromeDriver驱动包的路径
System.setProperty("webdriver.chrome.driver", "/Users/xiaoyuge/Desktop/browser/chromedriver");
driver = new ChromeDriver();
// 最大化浏览器
driver.manage().window().maximize();
//加载URL
driver.get("http://localhost:8082/mpg/login/auth1");
//等待加载完成
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
}
public static void closeBrowser() {
driver.quit();
}
public void loginTest() {
//获取页面元素
WebElement username = driver.findElementById("username");
WebElement password = driver.findElementById("password");
WebElement submit = driver.findElementByClassName("btn");
username.sendKeys("admin");
password.sendKeys("admin1");
//提交表单
submit.click();
//获取cookies
Set<org.openqa.selenium.Cookie> cookies = driver.manage().getCookies();
System.out.println("Size: " + cookies.size());
Iterator<Cookie> itr = cookies.iterator();
CookieStore cookieStore = new BasicCookieStore();
while (itr.hasNext()) {
Cookie cookie = itr.next();
BasicClientCookie basicClientCo = new BasicClientCookie(cookie.getName(), cookie.getValue());
basicClientCo.setDomain(cookie.getDomain());
basicClientCo.setPath(cookie.getPath());
cookieStore.addCookie(basicClientCo);
}
//如此便能拿到登录后的cookie,后续需要访问该网站其他网页,只需将拿到的cookie放到请求中“骗过”服务器即可
}
public void getData() {
DataSources dataSources = restRestTemplate.getForObject("", DataSources.class);
Assert.assertEquals("22", dataSources.getName());
}
}