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

时间:2016-02-09 06:54:32

标签: selenium selenium-webdriver selenium-chromedriver selenium-iedriver

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

    }

}

for Firefox,

public class Firefox {

      public static void main(String[] args) {

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

        }

    }

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

3 个答案:

答案 0 :(得分:6)

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

  

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

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

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

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

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

here成立。

答案 1 :(得分:1)

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

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

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

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

中发现的

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

答案 2 :(得分:0)

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

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