为什么我们需要为 Chrome 和 IE 浏览器而不是 Firefox 浏览器设置系统 属性

Why do we need to set the System Property for Chrome And IE Browser and Not For Firefox Browser

对于Chrome,

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");

    }

}

对于 Firefox,

public class Firefox {

      public static void main(String[] args) {

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

        }

    }

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

我也有同样的问题,但是经过挖掘我发现,

WebDriver uses native browser approach. Selenium offers inbuilt driver for Firefox but not for other browsers. All drivers (Chrome Driver, IE driver, etc.) are built based on the special JS Engine used by each browser.

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

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

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

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

成立于 here

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

Firefox 驱动程序 使用 Firefox 插件控制 Firefox 浏览器。使用的 Firefox 配置文件从机器上安装的配置文件中剥离出来,只包含 Selenium WebDriver.xpi

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

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

有关详细信息,请参阅 selenium documentation

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

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