【问题标题】:handle newly open browser window in selenium在 selenium 中处理新打开的浏览器窗口
【发布时间】:2014-09-04 08:51:20
【问题描述】:

我是硒测试的新手。所以请耐心等待。 我有一个网页,当我单击一个按钮时,会打开一个新的浏览器窗口,我必须在那里填写一些内容。我能够进入第一部分(选择按钮并打开新的浏览器窗口)。

driver.findElement(By.xpath("//xpath/to/button/id")).click();

但是当我尝试在新弹出的浏览器中填充内容时会出现问题。我正在使用相同的驱动程序(可能是这可能是问题)。当我打印当前 url 路径 driver.getCurrentUrl();它显示了前一个 url(不是重定向的)。如何将新打开的浏览器设置为驱动

有人可以帮我解决这个问题(任何教程都会很好)。提前致谢

【问题讨论】:

  • 一些基础研究会给你答案。

标签: java selenium


【解决方案1】:

试试这个:

String baseWindowHdl = driver.getWindowHandle();
driver.findElement(By.xpath("//xpath/to/button/id")).click();
//Go to New Window
for (String winHandle : driver.getWindowHandles()) {
        driver.switchTo().window(winHandle);
    }
enter your code here for new window

// Close pop-up
    driver.close();

    // Switch back to base window
    driver.switchTo().window(baseWindowHdl);

【讨论】:

    【解决方案2】:

    您需要确保使用 Selenium 处理自己的窗口。默认情况下,如果您有以下语句:

    driver.open("some_url");
    driver.getCurrentUrl(); // returns "some_url"
    driver.open("some_other_url");
    driver.getCurrentUrl(); // returns "some_other_url" 
    

    据此,您可以了解到,当您从 Selenium 调用 open() 时,它会在同一窗口中打开。

    你正在做的,是试图用另一个窗口操作。您可以使用 several answers out there 和其他资源来了解如何做您想做的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-29
      • 1970-01-01
      • 1970-01-01
      • 2016-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多