Internet explorer WebDriver如何启动IE实例?

Internet explorer WebDriver如何启动IE实例?,internet-explorer,selenium-webdriver,webdriver,Internet Explorer,Selenium Webdriver,Webdriver,WebDriver如何启动IE实例 也就是说,IEDriverServer.exe到底做什么?这个二进制文件是如何实例化IE浏览器窗口的?IEDriverServer是一个独立的HTTP服务器,它实现WebDriver的JSON wire协议,WebDriver使用该协议控制IE。IEDriverServer使用在机器中注册的COM库创建浏览器实例 首先,我认为有必要定义什么是WebDriver。 在定义中,正如另一个答案所提到的,WebDriver实现了与语言和平台无关的API,并通过相关的

WebDriver如何启动IE实例


也就是说,IEDriverServer.exe到底做什么?这个二进制文件是如何实例化IE浏览器窗口的?

IEDriverServer是一个独立的HTTP服务器,它实现WebDriver的JSON wire协议,WebDriver使用该协议控制IE。IEDriverServer使用在机器中注册的COM库创建浏览器实例


首先,我认为有必要定义什么是WebDriver。 在定义中,正如另一个答案所提到的,WebDriver实现了与语言和平台无关的API,并通过相关的有线协议驱动浏览器。我建议您阅读以了解WebDriver的内部体系结构

现在IEDriverServer.exe到底做什么?

IEDriverServer以及其他驱动程序可以被视为通用WebDriver命令的解释器

•因此,您可以使用Java、C#、python等编写一些命令

•您通过运行Selenium测试开始执行这些命令

•Selenium启动IEDriver服务器(以及其他驱动程序或您正在使用的任何驱动程序),驱动程序开始监听空闲端口

•驱动程序拦截Selenium命令,并通过JSon协议传输到浏览器,驱动浏览器。 @Vinoth S提供的答案显示了整个过程

其次,这个二进制文件如何实例化IE浏览器窗口?

正如@Roman所说,IEDriver和所有其他驱动程序都知道在哪里可以打开浏览器。这基本上就是注册处。如果您转到上面提到的注册表路径@Roman,您将看到与此类似的exe位置。在我的例子中,windows是D驱动器,但通常是C驱动器


当语言绑定请求新会话时,
IEDriverServer.exe
在“已知良好”URL上调用Windows API函数。通常是这样,但可以通过传递特定的功能来控制。随着IE7中保护模式的引入。驱动程序连接到localhost而不是about:blank,因为目标URL必须属于受保护的模式区域,而about:blank不属于

还需要使用
IELaunchURL
API,因为对于多进程IE,通过简单启动
iexplore.exe启动的进程可能不是包含要驱动的浏览器的实际进程。
IELaunchURL
API返回启动的浏览器的进程ID,驱动程序可以使用该ID定位该
iexplore.exe
进程所拥有的浏览器窗口的窗口句柄。一旦知道了窗口句柄,驱动程序就可以使用两种技术之一(或ShellWindows API)来获取对IE COM对象的引用,它使用IE COM对象来实际驱动浏览器


值得注意的是,默认情况下,驱动程序不会通过
CreateProcess
直接创建IE实例,因此不需要查询注册表来定位IE的安装位置以启动浏览器。虽然驱动程序确实确定IE可执行文件的位置,并使用注册表来确定位置,但它使用该位置,以便驱动程序能够正确、明确地确定系统上安装的IE版本。

您已经阅读过此文档了吗?是的,我以前看过那个医生。它没有解释IE浏览器如何实例化的机制。例如,FirefoxDriver在参数“webdriver.Firefox.bin”中指定的位置使用Firefox安装启动Firefox浏览器。对于IE,WebDriver似乎通过IEDriverServer.exe启动浏览器?这是正确的吗?文档的第一段说明了这一点,“驱动程序(WebDriver)支持运行32位和64位版本的浏览器。选择如何确定哪个”位是正确的“用于启动浏览器取决于启动哪个版本的IEDriverServer.exe。如果启动32位版本的IEDriverServer.exe,将启动32位版本的IE。同样,如果启动64位版本的IEDriverServer.exe,则会启动64位版本的IE。“IEDriverServer.exe如何知道IE安装在何处启动浏览器?它检查注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\Wonder!这正是我要查找的信息。