9

对于铬,

public class Chrome {

  public static void main(String[] args) {

        System.setProperty("webdriver.chrome.driver", "E://chromedriver.exe");
        WebDriver driver = new ChromeDriver();              
        driver.get("http://www.google.com");

    }

}

对于火狐,

public class Firefox {

      public static void main(String[] args) {

            WebDriver driver = new FirefoxDriver();              
            driver.get("http://www.google.com");

        }

    }

为什么我们需要system.setProperty为 Chrome 和 IE 指定?

4

3 回答 3

6

我也有同样的问题,但挖掘后我发现,

WebDriver使用本机浏览器方法。Selenium 为 Firefox 提供内置驱动程序,但不为其他浏览器提供驱动程序。所有的驱动程序(Chrome Driver、IE 驱动程序等)都是基于每个浏览器使用的特殊 JS Engine 构建的。

SeleniumWebDriver与 Mozilla Firefox 配合得非常好,因为它有一个内置的驱动程序服务器。但对于 Internet Explorer 和 Google Chrome,情况并非如此。Firefox 是最传统的浏览器,因此 SeleniumWebDriver在启动浏览器之前不需要设置任何额外的实用程序。Selenium 包会自动引用 firefox.exe 的默认位置,因此用户无需设置任何其他属性。

如果你曾经得到“驱动程序可执行文件的路径必须由 webdriver 设置。IE。驱动程序系统属性”错误或其类似措辞的 Chrome 等效项,这意味着您需要在浏览器上安装驱动程序服务器。驱动服务器管理浏览器和 Selenium 有线协议之间的调用。

InternetExplorerDriver是一个独立的服务器,它实现了 WebDriver 的有线协议

同样,Google Chrome 没有内置服务器,因此您需要一个 Chrome 驱动程序服务器来将您的 Selenium 代码传送到浏览器。您可以下载 Chrome 驱动程序服务器。

从这里创立。

于 2016-02-09T07:12:41.730 回答
1

FirefoxDriver、ChromeDriver、InternetExplorerDriver 的实现方式不同,因此实例化对象的方式也不同。

Firefox 驱动程序使用Firefox 插件控制 Firefox 浏览器。使用的 Firefox 配置文件从机器上安装的内容中删除,仅包含 Selenium WebDriver.xpi

InternetExplorerDriver是一个独立的服务器,它实现了 WebDriver 的有线协议。

ChromeDriver由 Chromium 项目iteslf 维护/支持WebDriver 通过 chromedriver 二进制文件(在 chromium 项目的下载页面上找到)与 Chrome 一起工作。您需要同时安装 chromedriver 和 chrome 浏览器版本。chromedriver 需要放置在系统路径的某个位置,以便 WebDriver 自动发现它。Chrome浏览器本身是chromedriver在默认安装路径中发现的

有关更多详细信息,请参阅selenium 文档

于 2016-02-09T07:28:31.023 回答
0

简单的回答是,每个浏览器都有自己的 WebDriver 实现,并且不由 Selenium 项目维护。因此,为了让 selenium 与浏览器特定的驱动程序交互,我们需要指定驱动程序的完整路径。

为什么firefox不需要指定驱动路径?在 Selenium 2.0 中,selenium RC 仍然存在并支持 firefox。从 Selenium 3.0 起,官方不再支持任何特定于浏览器的驱动程序。因此,我们需要通过 System.setproperty 为所有浏览器指定驱动程序路径。

于 2019-01-18T07:49:33.027 回答