对于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
?
答案 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为所有浏览器指定驱动程序路径。