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

che*_*tan 2 java selenium-webdriver

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

此代码可以正常工作:

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

WebDriver driver = new InternetExplorerDriver();
driver.get("www.mywebsite.com");
Run Code Online (Sandbox Code Playgroud)

当我的机器上已经有IE Executable -'iexplore.exe'时,selenium webdriver是否可以使用它来启动IE?

为什么我们IEDriverseleniumhq.com这里专门下载?

C:\Program Files\Internet Explorer\iexplore.exe
Run Code Online (Sandbox Code Playgroud)

我试着设置它并运行程序.浏览器已启动地址,--port=1234/但它无法导航到相应的网站,最终抛出异常:

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

Yos*_*ner 7

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

webdriver的网站解释说:

Selenium-WebDriver使用每个浏览器对自动化的本机支持直接调用浏览器.如何进行这些直接调用,以及它们支持的功能取决于您使用的浏览器.

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

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

从本质上讲,浏览器不知道如何"谈论"WebDriver Wire Protocol,而WebDriver不知道如何"对话"浏览器API.实际上,每个浏览器都有自己的原生API."浏览器驱动程序"知道如何解释有线协议并调用该浏览器的API.