gpt4 book ai didi

java - Selenium ,我怎样才能选择新窗口

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:18:30 25 4
gpt4 key购买 nike

我使用 TestNG 在 Eclipse 中运行我的 selenium rc 测试。我有一个链接试图打开一个新的浏览器页面。如何选择这个新页面进行操作?我使用这段代码:

selenium.selectWindow("name=NewPage");

但是它说找不到页面。我还尝试使用以下代码定义页面 ID 或标题:

String[] wins = selenium.getAllWindowIds();
for (String s : wins)
System.out.println("win: " + s);

它没有定义我新打开的窗口:

win: MainPage
win:

如果使用 selenium.getAllWindowNames() 我会得到 win: selenium_main_app_window
获胜:selenium_blank65815

我写了这段代码 selenium.selectWindow("name=blank99157"); 但得到了错误 - 错误:窗口不存在。如果这看起来像 Selenium 错误,请务必阅读 http://seleniumhq.org/docs/02_selenium_ide.html#alerts-popups-and-multiple-windows 以了解潜在的解决方法。

最佳答案

窗口显然没有名字,所以你不能通过名字来选择它。

  1. 如果窗口是通过 JavaScript 打开的并且您可以更改脚本,请尝试更改 window.open("someUrl");window.open("someUrl", "someName"); ,然后您就可以通过设置的名称选择窗口。有关 MDN doc for window.open() 的更多信息.

  2. Selenium RC 不支持 <a href="someUrl" target="_blank">链接(在新窗口中打开链接)。因此,如果窗口是通过此类链接打开的,则必须找到此 <a>元素,得到 href属性和调用

    selenium.openWindow(theFoundUrl, "theNewWindow");
    selenium.selectWindow("id=theNewWindow");
  3. 如果在 onload 之前或期间通过 JavaScript 打开它事件,你需要调用

    selenium.openWindow("", "theNewWindow");
    selenium.selectWindow("id=theNewWindow");

    有关此问题的更多信息,请参见错误 SEL-339或在 openWindow() selectWindow() JavaDocs。

  4. 如果你只有两个窗口/想打开最新的一个,你可以试试

    selenium.selectPopup()

    显然,这是最简单的方法,因为它选择了第一个非顶部窗口。因此,它仅在您想要选择最新的弹出窗口时才有用。

  5. 如果新窗口有一个唯一标题,你可以这样做

    selenium.selectPopup("Title of the window");

    selenium.selectWindow("title=Title of the window");

  6. 否则,您必须遍历 selenium.getAllWindowNames() 获得正确的名称(Selenium 为没有名称的窗口创建名称)。但是,您不能将该名称硬编码到您的测试用例中,因为它每次都会更改,因此您需要为此制定一些动态逻辑。

  7. 您不会喜欢这个:选择 WebDriver。它应该更能抵抗此类问题。

关于java - Selenium ,我怎样才能选择新窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11220869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com