【问题标题】:difference between chromedriver.exe and selenium-chrome-driver.jarchromedriver.exe 和 selenium-chrome-driver.jar 之间的区别
【发布时间】:2019-07-04 14:02:47
【问题描述】:

我想知道selenium-chrome-driver.jarchromedriver.exe的区别

我的朋友无需在脚本/chromedriver 初始化中指定chromedriver.exe 的位置即可启动chrome 浏览器,她在pom.xml 中提到了selenium-chrome-driver.jar,这有什么不同吗?如果是那怎么办?

【问题讨论】:

    标签: java selenium selenium-chromedriver


    【解决方案1】:

    首先,您需要了解 Selenium 如何与浏览器通信。

    当您编写 selenium 测试时,您使用客户端代码绑定以您选择的语言编写代码。然后,此代码使用 JSON 有线协议与在浏览器中作为插件运行的相关驱动程序二进制文件进行对话。

    所以交互是:

    Selenium 有一个客户端 API,它详细说明了您可以通过 JSON 有线协议发送的所有命令,然后它有一系列代码允许它与特定的驱动程序二进制文件交互。因此,在您的情况下,selenium-chrome-driver.jar 具有专门用于与 chrome 驱动程序二进制文件交互的代码。如果您正在使用 gecko 驱动程序二进制文件,则需要使用 selenium-firefox-driver.jar。针对特定浏览器的每个驱动程序二进制文件都有一个关联的 jar,其中包含与相关驱动程序二进制文件通信所需的代码。

    为此,您需要所有元素,因此要能够使用 Webdriver 驱动 Google Chrome,您需要拥有 selenium-chrome-driver.jarchromedriver.exe 二进制文件。

    【讨论】:

    • 非常感谢您的详细解释,它符合我的目的。你拥有如此深入的知识。我很感激。
    • @Ardesko,您能否更清楚地说明一个场景,您没有在任何配置类中指定二进制文件(chromedriver.exe)的位置,但 chrome 浏览器仍在成功启动.事实上,我已经删除了所有相关的环境变量,但 Chrome 浏览器仍在启动。我已经用 Firefox 和 chrome 验证了这一点,因为两者都正在启动。
    • 默认情况下,selenium 将使用环境变量webdriver.<browsername>.driver 来定位驱动程序二进制文件。在这种情况下,最可能的解释是您已经在您的机器上安装了 chromedriver,并且某处有一个名为 webdriver.chrome.driver 的环境变量集,它指示 chromedriver 二进制文件的位置。如果您在终端中输入 env |grep webdriver,它应该会显示所有已设置的 webdriver env 变量。
    • 要清楚你不需要在代码中设置这些环境变量(事实上你不应该,在代码中设置它们与在代码中硬编码驱动程序二进制文件的路径和击败 env 变量的整个对象)。
    【解决方案2】:

    所以selenium-chrome-driver.jar 或多或少只是一个可以包含任何内容的 ZIP 文件。

    最好参考chromedriver.exe 的位置来启动 Chrome。

    我相信没有太大区别,但如果你想使用.jar,你需要提取selenium-chrome-driver.jar并从那里引用chromedriver.exe

    【讨论】:

    • 感谢您的回复,能否请您分别提供有关这两件事的更多详细信息。 selenium-chrome-driver.jar 和 chromdriver.exe 有什么意义,如果我们删除它们中的任何一个会发生什么。各自的重要性/贡献。
    • 所以简而言之,在启动 Selenium 项目时,您可能需要使用多个依赖项。例如:selenium-api, selenium-remote-driver, gson, guava 等,而不是将这些依赖项手动添加到 pom.xml,您可以引用 selenium-chrome-driver.jar,它将获取所有这些依赖项。另一方面,您有 chromedriver.exe,这是您运行 Selenium Chromedriver 的依赖项。这是一个独立的可执行文件,与前面提到的.jar 文件不同,它没有与之关联的其他依赖项。
    • 最后,如果您删除selenium-chrome-driver.jar,那么您将无法访问该.jar 文件中的依赖项以在您的项目中使用。这意味着您需要自己在 pom.xml 中引用您的依赖项。如果您删除 chromedriver.exe,您将无法启动 ChromeDriver但如果您的 .jar 文件中包含 chromedriver.exe,那么这应该不是问题。
    • selenium-chrome-driver.jar 不包含 chromedriver 驱动程序二进制文件。
    • @Ardesco 道歉,我的意思是它可以包含 ChromeDriver.class
    猜你喜欢
    • 2015-01-09
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 1970-01-01
    • 2011-07-22
    • 2014-05-18
    • 2012-10-24
    • 2012-04-21
    相关资源
    最近更新 更多