【问题标题】:When and how to use switchTo() method in webDriver (Selenium 2) to handle window/pop up何时以及如何在 webDriver (Selenium 2) 中使用 switchTo() 方法来处理窗口/弹出窗口
【发布时间】:2012-10-03 18:38:31
【问题描述】:

我在点击某些页面元素或与之交互时遇到问题。它们看起来像普通的 DOM 对象。这里只是按钮是一个的代码

<div style="clear: both; text-align: right">
 <img id="nextstep" class="nextbtn" height="21" alt="" src="/edit/images/author/next.png">
</div>

单击“上传文件”按钮后,会打开另一个弹出窗口。我的任务是在弹出窗口上传文件并返回原始窗口。我会尽力解释

我为

启动了一个webDriver

www.test.com(

我登录

点击上传文件按钮

点击后我们的网站重定向到 www.foo.com 而不是上面的我使用之前创建的相同驱动程序,我尝试与上传后页面上的按钮进行交互

button.click()

它永远不会找到这些按钮,但它们在 firebug 中并且看起来很正常。

【问题讨论】:

  • 只要您使用的是 webdriver 打开的同一个窗口,您就不需要切换。你能发布一个不起作用的代码的 sn-p 吗?
  • 我跟踪窗口列表(通过句柄字符串),当我使用 switchTo() 返回原始窗口时,有时我还使用 JavaScript 执行器(在 WebDriver 中)来获取焦点窗口并将其置于前面(如果 switchTo 未能这样做)。

标签: selenium webdriver selenium-webdriver


【解决方案1】:

您可以尝试在重定向后再次切换到窗口。

保存你的窗口句柄:

String myWindowHandle = driver.getWindowHandle();

重定向到你想要的页面,然后使用窗口句柄调用switchTo:

driver.switchTo().window(myWindowHandle );

您的页面是否包含任何框架?也可能是重定向后您不在正确的帧中。

【讨论】:

  • 这可以在.Net 版本中使用吗?我正试图让它在其中发挥作用,但还没有找到捕捉标题的好方法。也许是因为新的窗口标题是_blank...
  • @chaosr:您的代码是正确的。但我认为它需要在 myWindowHandle 之前切换到 defaultContent
  • @chaosr 你能告诉我如何在同一浏览器的另一个选项卡上打开链接而不是打开新窗口吗?
猜你喜欢
  • 1970-01-01
  • 2015-07-09
  • 2012-06-29
  • 2020-06-11
  • 1970-01-01
  • 1970-01-01
  • 2012-07-16
  • 1970-01-01
相关资源
最近更新 更多