【问题标题】:Unable to switch to Alert without closing window popup in webdriver无法在 webdriver 中关闭弹出窗口的情况下切换到警报
【发布时间】:2013-07-18 14:53:56
【问题描述】:

场景:

  1. 在文本框中输入关键字(位置)
  2. 按 Tab 或单击下一个元素
  3. 会弹出一个窗口
  4. 将列出符合条件的职位列表
  5. 点击需要的记录
  6. 弹出窗口自动关闭
  7. 将显示警报
  8. 点击警报的确定按钮。
  9. 切换到主窗口查看职位详情

问题:- 我在网站上找到了许多解决方案,但都是关于在窗口弹出窗口上执行操作并关闭弹出窗口然后切换到警报或主浏览器

但我的应用程序在选择后会自动关闭弹出窗口,因此我无法使用 driver.close() 或 driver.switchto.defaultContent()。

如果我不关闭驱动程序(用于弹出),我无法识别弹出后显示的下一个警报。

如果我直接切换到 mainwindhandle,则会发生警报解除而不是接受。

请任何知道如何从弹出窗口切换到警报而不需要弹出关闭帮助的人...

谢谢....

【问题讨论】:

  • 哇。你可以通过构建一个可重现的测试用例来帮助我们,否则我会尝试自己构建一个......在周末。另外,为了确定,您能否向我们展示您的代码,以便我们确保没有愚蠢的拼写错误/忘记的错误?
  • No Slanec 我确定没有手动错误,因为相同的代码在 IE 和 chrome 上运行良好,但在 Firefox(17 和 webdriver 2.25)上运行良好。父窗口有框架会产生问题
  • 啊哈!这实际上似乎是一个 WebDriver 错误。使用当前的 Selenium 2.33.0 重试,如果仍然失败,file a bug。不幸的是,这基本上是我们能做的一切。

标签: webdriver selenium-webdriver


【解决方案1】:
  1. 如果在您尝试接受它时发生警报解除,为什么不使用 alert.dismiss(),它可能会接受在您的上下文中发出警报。

  2. 当您切换到弹出窗口时,驱动程序焦点在弹出窗口上。您可能想要做的是,在单击所需记录后,切换到主窗口然后接受警报。

【讨论】:

  • 点击需要的记录后,弹出窗口自动关闭并显示警报。问题1:除非我使用driver.close,否则webdriver无法识别警报...我无法使用此boz应用程序自动关闭问题2:当我使用句柄切换到父窗口时,alter关闭为dismiss,所以无论哪种方式我都没有达到我的预期条件是 alert.accept...相同的脚本在 IE 和 Chrome 上运行良好..firefox 浏览器中的问题..请任何人有解决方法让我知道....
【解决方案2】:

This一定对你有帮助。根据您的问题,即使您的弹出窗口自动关闭,您也必须能够通过切换回父窗口元素来访问它。一直都不需要 driver.close() 。这是代码,

// do something with the pop up and it closes automatically here.
driver.switchTo().defaultContent();
driver.switchTo().frame("your parent window mainframe"));
// try to access your parent window element here 

【讨论】:

  • 感谢 Karthikeyan 的链接,但代码相同,如果您观察 3) 弹出操作后,将驱动程序切换回父窗口 browser.close(); //关闭弹出窗口...我不想要此语句,因为如果我使用此异常,我的应用程序已经关闭弹出窗口...我想取消此语句..任何解决此问题的方法都值得赞赏..它看起来很紧急3天后的解决方案...
  • 然后使用'windowIterator = browser.getWindowHandles();'获取当前活动的浏览器。
  • Karthik,弹出窗口自动关闭后只有一个窗口句柄,当我使用它切换时,警报关闭但作为关闭..我想作为接受继续..有些地方我迷路了...
  • @Shaan.aha 更新了我的答案,请检查
猜你喜欢
  • 1970-01-01
  • 2016-08-12
  • 1970-01-01
  • 2012-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多