Selenium C#在两个Web浏览器之间切换焦点

时间:2014-08-08 14:38:58

标签: c# selenium-webdriver

我创建了两个IWebDriver对象。一个用于FireFox浏览器,另一个用于Chrome浏览器。我很难在两个浏览器之间切换焦点。我尝试过使用以下内容: -

_webDriver2 = new ChromeDriver();
string chromeHandle = _webDriver2.CurrentWindowHandle; 

_webDriver = new FirefoxDriver();
string fireFoxHandle = _webDriver.CurrentWindowHandle;

_webDriver.SwitchTo().Window(fireFoxHandle); 
_webDriver2.SwitchTo().Window(chromeHandle); 

但这似乎并未使网络浏览器成为焦点。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

当前的驱动程序实现没有任何工作可以将浏览器的操作系统级窗口置于前台。在某些操作系统中(我正在看你,Windows),不可能将任何给定的应用程序窗口可靠地带到前台,因为这是一场永远无法赢得的军备竞赛。 switchTo().window()方法(无论何种语言绑定)仅在同一浏览器会话中的给定浏览器的多个窗口之间切换。也就是说,由相同的WebDriver实例启动。此外,它所做的只是直接向哪个窗口发送驱动程序命令,而不是哪个窗口位于OS的“前景”中。如果您确实认为自己需要这样的功能,可以尝试使用特定于操作系统的机制,例如API调用,使用适合您语言的适当本机语言接口(JNI for Java,P / Invoke for .NET等),但这些机制很可能不是跨平台的。