为什么我们需要下载浏览器(IE,Chrome)驱动程序

时间:2017-02-07 07:02:47

标签: java selenium-webdriver

为了在差异浏览器上执行测试脚本,我们从seleniumhq.com下载特定的浏览器驱动程序并运行脚本。

此代码可以正常工作:

System.setProperty("webdriver.ie.driver", "C:\\Users\\Public\\CIO\\resources\\iedriver.exe");

WebDriver driver = new InternetExplorerDriver();
driver.get("www.mywebsite.com");

当我已经拥有IE可执行文件时 - ' iexplore.exe'在我的机器上,selenium webdriver能否使用它来启动IE?

为什么我们专门从IEDriver下载seleniumhq.com

C:\Program Files\Internet Explorer\iexplore.exe

我甚至试图设置它并运行该程序。浏览器已启动,地址为--port=1234/,但它无法导航到相应的网站,最终导致异常:

  

线程中的异常" main" org.openqa.selenium.remote.UnreachableBrowserException:       无法开始新会话。可能的原因是远程服务器的地址无效或       浏览器启动失败。       构建信息:版本:' 2.28.0',修订版:' 18309',时间:' 2012-12-11 20:21:18'

1 个答案:

答案 0 :(得分:7)

"浏览器驱动程序"是实现WebDriver wire protocol的服务器,并且知道如何将这些命令转换为特定浏览器的专有本机API。

WebDriver site解释说:

  

Selenium-WebDriver使用每个浏览器直接调用浏览器   浏览器对自动化的原生支持。这些直接电话是怎样的   制作,他们支持的功能取决于您的浏览器   使用

例如,ChromeDriver wiki将其描述如下:

  

ChromeDriver由三个独立的部分组成。有   浏览器本身(" chrome"),由语言提供的语言绑定   Selenium项目("驱动程序")和从中下载的可执行文件   Chromium项目,作为" chrome"之间的桥梁。和   "驱动"

基本上,浏览器不知道如何" talk" WebDriver Wire协议和WebDriver都不知道如何对话"谈话"浏览器API。实际上,每个浏览器都有自己的原生API。 "浏览器驱动程序"知道如何解释有线协议并调用该浏览器的API。