我有一个用户尝试登录应用程序(简单网页)的实例。成功登录后,应用程序将关闭当前页面并打开新网页。其余的业务运营从那里开始。
直到点API点击登录按钮,一切都很顺利。登录后(一旦登录网页关闭并打开新会话),API将抛出“无法找到浏览器”。这是正确的,因为应用程序已关闭原始驱动程序实例。
有没有办法使用selenium来实现这些场景,因为它们现在非常普遍 - 在典型的业务应用程序中的一天。
感谢。
答案 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());