我对WatiN怀念的一件事是能够附加到不是由Selenium生成的浏览器实例。在我的最后一个职位上,这就是我使用WatiN的全部原因,因为浏览器始终是由另一个应用程序生成的。


做到这一点的能力在编写和调试脚本时是无价的,并且希望我做错了或者是在路线图上。


#1 楼

我实际上并不完全确定您可以切换到驱动程序未产生的窗口。我认为selenium 2项目的工作人员在切换到由其他驱动程序生成的窗口方面做了一些工作。在执行操作时:

driver.getWindowHandles()


所得到的只是被调用驱动程序对象生成的窗口。

评论


这是完全正确的。目前没有用于附加到正在运行的浏览器实例的API。但是,这是一个常见的功能请求,是的,它正在路线图上。考虑到特定驱动程序的体系结构,对于IE而言,实现起来最简单。请记住,从getWindowHandles()获得的“句柄”不是Windows HWND;而是Selenium WebDriver用于标识窗口的不透明字符串。

– JimEvans
2011年5月19日15:54



不幸的是,我发现情况确实如此。幸运的是,我目前不需要此功能,但是,将来会急切地等待此功能。

– Lyndon Vrooman
2011年6月6日上午10:12

2016年:仍然无法连接到非由驱动程序生成的浏览器?我正在尝试自动执行复杂的登录,仍然没有运气。

– zerologiko
16年7月13日在13:55

据我所知@zerologiko仍然是不可能的。如果有人愿意纠正我,那就太好了。

–杰森·沃德(Jason Ward)
16年7月14日在15:11

#2 楼

您肯定无法使用Firefox(因为selenium使用selenium xpi〜插件文件启动该浏览器,并且可以控制它)。

我不确定IE的启动方式,但我敢打赌这是可能的。

不确定chrome。

评论


IE使用dll,而chrome使用zip文件。

–杰森·沃德(Jason Ward)
2011年5月10日20:07



#3 楼

在Selenium 2中确实有可能。您可以获取窗口句柄并在其上切换到一个。即

for (String handle : driver.getWindowHandles()) {
driver.switchTo().window(handle);
}


有关此内容的更多信息,请点击此处。

评论


我今天花了一些时间尝试使其工作,但只能切换到在当前测试执行期间打开的浏览器的句柄。我将与我的一位开发人员坐下来,看看我是否仍无法使它继续工作。

– Lyndon Vrooman
2011年5月9日23:15

我认为您无法连接到非由驱动程序产生的浏览器。 Tarun的解决方案仅允许在由该特定驱动程序产生的浏览器之间来回切换

–杰森·沃德(Jason Ward)
2011年5月10日下午14:08