1

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

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

有没有办法使用 selenium 来实现这些场景,因为它们现在很常见——在典型的业务应用程序中。

谢谢。

4

2 回答 2

2

如果您需要驱动不同的浏览器窗口或 iframe,则需要使用switchto. 从WebDriver 常见问题解答

问:如何处理弹出窗口?

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

于 2013-05-20T20:32:33.900 回答
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());
于 2013-05-21T08:30:09.527 回答