【发布时间】:2020-10-24 22:50:19
【问题描述】:
我了解 Selenium 是用 Java 实现的。 Quarkus 是 Java,没有一些框架密集使用反射。我找不到任何人使用 Quarkus 启动 selenium webdriver 的任何参考资料。
这已经完成了吗?
【问题讨论】:
-
我没有看到任何人在 Quarkus char 或 Quarkus GitHub 中提到这一点
我了解 Selenium 是用 Java 实现的。 Quarkus 是 Java,没有一些框架密集使用反射。我找不到任何人使用 Quarkus 启动 selenium webdriver 的任何参考资料。
这已经完成了吗?
【问题讨论】:
是的,因为我正在使用它进行一些小的修改,即您必须在 maven 项目pom.xml 中排除冲突的传递依赖(版本),如下所示:
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
<scope>test</scope>
<exclusions>
<exclusion>
<artifactId>byte-buddy</artifactId>
<groupId>net.bytebuddy</groupId>
</exclusion>
</exclusions>
</dependency>
然后你可以使用常规的 Selenium 功能,即
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setHeadless(true); // Using a dockerized selenium
seleniumDriver = new RemoteWebDriver(new URL("http://selenium-chrome-standalone:4444/wd/hub"), chromeOptions);
seleniumDriver.get("http://<Quarkus service URL>");
// do some things
seleniumDriver.quit();
您也可以自己启动 Selenium 驱动程序服务(而不是 dockerized 或远程):
ChromeDriverService service = new ChromeDriverService.Builder()
.usingDriverExecutable(new File("src/test/resources/seleniumdrivers/chromedriver_linux64_81.0.4044.138/chromedriver"))
.usingAnyFreePort()
.build();
service.start();
或者像这样在gitlab-ci.yml 中使用 dockerized Selenium:
uitest:
stage: uitest
services:
- name: selenium/standalone-chrome
alias: selenium-chrome-standalone
有了这个,我什至设法在管道中运行集成测试 (@QuarkusTest) 时访问 Quarkus 服务
@TestHTTPResource("/myServicePath")
URL serviceResourceUrl;
【讨论】: