java - 当无法通过系统属性或路径指定 geckodriver 位置时,是否有非远程方法来指定 geckodriver 位置?

标签 java selenium geckodriver

在我的应用程序中,我无法使用 System.setProperty 设置 geckodriver 可执行位置,并且无法在路径中设置它。

为什么?因为我的应用程序是 Multi-Tenancy 的......并且每个租户都有自己的目录,在其中复制和运行 Firefox 和 Geckodriver。这是由于 Firefox + Geckodriver 中的错误造成的,其中无限的 javascript 循环和其他几种情况会导致 Firefox 挂起,直到手动终止。有时戒掉也不能完全杀死事情。因此,我们需要在 JVM 中每个租户提供一个自定义 geckodriver 位置。这就是问题所在。

所以我改用:

driverService = new GeckoDriverService.Builder()
          .usingDriverExecutable(new File(geckoDriverBinaryPath))
          .build();
driverService.start();
RemoteWebDriver driver = new RemoteWebDriver(driverServiceUrl, capabilities);

但这让我在非远程时使用 RemoteWebDriver。

有更好的方法吗?

最佳答案

与其在 FirefoxDriverService 对象上调用 start(),为什么不简单地使用接受该服务的 FirefoxDriver 构造函数呢?

driverService = new GeckoDriverService.Builder()
      .usingDriverExecutable(new File(geckoDriverBinaryPath))
      .build();
WebDriver driver = new FirefoxDriver(driverService);

关于java - 当无法通过系统属性或路径指定 geckodriver 位置时,是否有非远程方法来指定 geckodriver 位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49136886/

相关文章:

java - 如何使用移动 Chrome 并通过 Appium 测试应用程序

c# - 为什么 Firefox 需要 GeckoDriver?

java - 语法规则优先级如何工作?

java - FilteredItemsSelectionDialog - 刷新内容提供程序

selenium - 如何使用 Selenium WebDriver 等待重定向链在最终页面加载不可预测的情况下解决?

java - 在使用 Cucumber 和 JUnit 时,如何截取屏幕截图并将其附加到 Allure 报告中?

docker - 为什么我的容器化 Selenium 应用程序仅在 AWS Lambda 中失败?

ruby-on-rails - 无法连接到Geckodriver

java - 如何使用 Google Spreadsheet API 将一个单元格的样式复制到另一个单元格中

java - 如何在保持纵横比的同时调整 JFrame 的大小?