我可以 运行 一个带有 Quarkus 的 selenium 驱动程序吗?

can I run a selenium driver with Quarkus?

我了解到 Java 中实现了 Selenium。 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;