Selenium IE webdriver - 如何在应用程序关闭浏览器窗口并启动新窗口时应对?

时间:2013-05-20 12:58:01

标签: selenium-webdriver

我有一个用户尝试登录应用程序(简单网页)的实例。成功登录后,应用程序将关闭当前页面并打开新网页。其余的业务运营从那里开始。

直到点API点击登录按钮,一切都很顺利。登录后(一旦登录网页关闭并打开新会话),API将抛出“无法找到浏览器”。这是正确的,因为应用程序已关闭原始驱动程序实例。

有没有办法使用selenium来实现这些场景,因为它们现在非常普遍 - 在典型的业务应用程序中的一天。

感谢。

2 个答案:

答案 0 :(得分:2)

如果您需要驱动其他浏览器窗口或iframe,则需要使用switchto。来自WebDriver faq

  

问:如何处理弹出窗口?

     

答:WebDriver提供了处理多个窗口的能力。这是通过使用“WebDriver.switchTo()。window()”方法切换到具有已知名称的窗口来完成的。如果名称未知,则可以使用“WebDriver.getWindowHandles()”获取已知窗口的列表。您可以将句柄传递给“switchTo()。window()”。

答案 1 :(得分:1)

感谢您的回答。 我做了以下工作来实现我的查询。

执行javascript打开新窗口。


IJavaScriptExecutor jScript = driver as IJavaScriptExecutor; jScript.ExecuteScript("window.open()");


切换到新打开的窗口。


List<string> handles = driver.WindowHandles.ToList<string>(); driver.SwitchTo().Window(handles.Last());


在新窗口中启动导航和登录操作

driver.Navigate().GoToUrl("Your website");

登录后,应用程序将关闭新窗口,但主驱动程序窗口仍然存在。

为新窗口实现一个简单的SwitchTo()以启动新的业务操作

List<string> handles = driver.WindowHandles.ToList<string>();
driver.SwitchTo().Window(handles.Last());