使用Spring Boot来使用Selenide
环境
-
- macOS Monterey 12.4
-
- Google Chrome 103.0.5060.134
-
- JDK 17.0.1 (Eclipse Temurin)
-
- Spring Boot 2.7.1
- Selenide 6.6.6
Selenide是什么?
听说这是一个使Selenium更易使用的封装库。
官方网站→ https://selenide.org/
添加依赖性
在pom.xml中添加selenide,与spring-boot-starter-test一起。
<dependencies>
...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.codeborne</groupId>
<artifactId>selenide</artifactId>
<version>6.6.6</version>
<scope>test</scope>
</dependency>
...
</dependencies>
根据参考文章,过去的Spring Boot版本依赖于Selenium,所以需要重新指定Selenium的版本。但是,至少在Spring Boot 2.7中不再依赖于Selenium,因此不需要这样做了。
Selenide的配置。
在“src/test/resources”文件夹中创建一个名为“selenide.properties”的文件,并按照以下方式写入。
selenide.browser=chrome
selenide.headless=true
请查阅 com.codeborne.selenide.Configuration 类的 Javadoc 来了解有哪些设置项。
编写测试代码
请参考Selenide的官方文档以获取详细的API信息。
package com.example.springmemo.integration;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.server.LocalServerPort;
import static com.codeborne.selenide.Selenide.*;
import static com.codeborne.selenide.Condition.*;
import static com.codeborne.selenide.CollectionCondition.*;
import static org.junit.jupiter.api.Assertions.*;
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class MemoIntegrationTest {
@LocalServerPort
int port;
private String url(String path) {
return "http://localhost:%d%s".formatted(port, path);
}
@Test
@DisplayName("トップページにアクセスしたらメモが3件表示される")
void test01() {
open(url("/"));
String selector = ".tr-memo";
assertAll(
() -> $$(selector).shouldBe(size(3)),
() -> $(selector).shouldBe(matchText("1 あああ \\d{4}年\\d{1,2}月\\d{1,2}日 \\d{1,2}時\\d{1,2}分\\d{1,2}秒"))
);
}
}