java - 使用另一个库将驱动程序路径发送到 selenium 节点

标签 java selenium-webdriver selenium-grid2 webdrivermanager-java

在 selenium 网格中注册新节点时,我使用 -D java 参数指定可执行驱动程序的路径:

java -Dwebdriver.chrome.driver="../driver/chromedriver.exe" -jar selenium-server-standalone-3.3.1.jar -role node -hub http://localhost:4445/grid/register -nodeConfig config/defaultNodeConfig.json

我想使用 webdrivermanager-java 库 ( https://github.com/bonigarcia/webdrivermanager ) 来管理驱动程序可执行文件。但它使用 System.setProperty() 注册驱动程序,因此它仅在运行该库的 JVM 中可用(我是否弄错了?)。

我的问题是:

在启动节点之前从命令行调用webdrivermanager-java的正确方法是什么,以及如何将下载的驱动程序的路径导出到selenium节点的-D java参数?

我有一个想法,创建小型“node-runner”java应用程序并在其中调用webdrivermanager和selenium-server-standalone.jar,因此它们使用相同的JVM环境。

是否有更好的解决方案来使用 webdrivermanager 设置节点的驱动程序路径?

最佳答案

事实上,恕我直言,最好的选择是创建一个 Java 应用程序,在其中调用 WebDriverManager首先,然后在集线器中注册节点。像这样的事情:

依赖关系

<dependencies>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-server</artifactId>
        <version>3.141.59</version>
    </dependency>
    <dependency>
        <groupId>io.github.bonigarcia</groupId>
        <artifactId>webdrivermanager</artifactId>
        <version>5.0.1</version>
    </dependency>
</dependencies>

启动 Selenium 中心的应用

import org.openqa.grid.selenium.GridLauncherV3;

public class StartHub {

    public static void main(String[] args) throws Exception {
        GridLauncherV3.main(new String[] { "-role", "hub", "-port", "4444" });
    }

}

用于在中心注册节点(本例中为 Chrome)的应用

import org.openqa.grid.selenium.GridLauncherV3;

import io.github.bonigarcia.wdm.WebDriverManager;

public class StartNode {

    public static void main(String[] args) throws Exception {
        WebDriverManager.chromedriver().setup();
        GridLauncherV3.main(new String[] { "-role", "node", "-hub",
                "http://localhost:4444/grid/register", "-browser",
                "browserName=chrome" });
    }

}

关于java - 使用另一个库将驱动程序路径发送到 selenium 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43320049/

相关文章:

java - Java 中的字符串到 String[]

java - 从 jar 文件启动时 Selenium 服务器没有响应

java - apache HttpClient 的 Protocol.registerProtocol 是否会导致全局静态更改?

java - 为什么Java的基于值的类不应该被序列化?

python - 为什么我的 Python 代码为我的列表中的所有元素提取相同的数据?

java - 使用 Selenium 独立服务器 3.9.1 在 Eclipse Photon 中导入时出现 "The import org cannot be resolved"错误

java - 如何在 TestNG 中根据条件排除组?

hudson - Selenium Grid 2 或 Hudson w/slave 节点?

selenium - 如何在远程webdriver/grid配置中在节点端设置firefox配置文件

java - 如何以独立于平台的方式为 Java 应用程序选择日志文件的位置?