【问题标题】:Selenium webdriver | driver().switchTo().defaultContent() method is not switching the control back to parent window from multiple child windowsSelenium 网络驱动程序 | driver().switchTo().defaultContent() 方法不会将控件从多个子窗口切换回父窗口
【发布时间】:2021-12-16 17:12:38
【问题描述】:

Selenium 网络驱动程序 | driver().switchTo().defaultContent() 方法不会将控件从多个子窗口切换回父窗口。

我面临着没有窗户和框架的问题。当我点击父窗口上的一个按钮说 wp 时,一个新的 web 窗口说 w1 正在生成,最终又生成一个窗口说 w2 ,我想切换到 wp 控制,所以我正在使用

driver.switchTo.defaultContent()

但它不会将控制切换到父窗口。

【问题讨论】:

标签: java selenium user-interface automation webdriver


【解决方案1】:

我有这个问题。 我找到了答案 试试这个,然后给我反馈 - 也许我可以帮助你

 const number1 = await driver.wait(until.elementLocated(By.xpath('your xpath')))
      await driver.executeScript("arguments[0].click()", number1).then(() =>{
        console.log(driver.executeScript, 'Click done');
      })

【讨论】:

  • 工作...谢谢安德烈·库尔库拉
  • 祝我的朋友好运)
【解决方案2】:

您要切换到窗口标签还是iframe

对于框架:我们需要这样做,

driver.switchTo().defaultContent();
driver.switchTo.parentFrame();

适用于窗户:

String parentwindow = driver.getWindowHandle();
List<String> allwindows = new ArrayList<>(driver.getWindowHandles());
driver.switchTo().window(allwindows.get(1));
driver.switchTo().window(parentwindow);

【讨论】:

    【解决方案3】:

    在切换到父框架时可以使用两种类似的方法,但它们之间存在细微差别。

    driver.switchTo().defaultContent() driver.switchTo().parentFrame()

    例如:您有三个帧 i1、i2、i3 并且您在帧 i3 上, 当您使用 driver.switchTo.defaultContent() 时,它会将您带到 i1,而使用 driver.switchTo.parentFrame() 控制将切换到 i2 即直接父框架(当前框架的父框架)。

    【讨论】:

    • 您好 Srinivas,感谢您的回答,但我面临的问题是没有窗户和框架。当我单击父窗口上的按钮说 wp 时,会生成一个新的 Web 窗口说 w1 并最终生成另一个窗口说 w2 ,我想将 te 控制切换到 wp 所以我正在使用 driver.switchTo.defaultContent() 但是它不会将控件切换到父窗口。
    【解决方案4】:

    如果进程打开多个浏览器标签,我们需要使用switchTo().window(window reference);在标签之间切换焦点。

    // Save the initial tab as parentwindow 
    String parentwindow = driver.getWindowHandle();
    
    // Collect the tabs opened in a list
    List<String> windows = new ArrayList<>(driver.getWindowHandles());
    
    // Switch to window other than parentwindow
    driver.switchTo().window(windows.get(1));
    
    // Switch back to parentwindow
    driver.switchTo().window(parentwindow);
    

    【讨论】:

      【解决方案5】:

      我将 RemoteWebDriver 用于 VM 运行测试的云会话。在本地,它使用 $ driver.switchTo().defaultContent() $ 对我有用,但突然之间,它不适用于 RemoteWebDriver。我使用以下方法解决了我的问题:

      driver.switchTo().parentFrame();
      

      【讨论】:

        猜你喜欢
        • 2012-07-06
        • 2013-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-15
        相关资源
        最近更新 更多