硒网络驱动程序 | driver().switchTo().defaultContent() 方法未将控件从多个子 windows 切换回父 window

Selenium webdriver | driver().switchTo().defaultContent() method is not switching the control back to parent window from multiple child windows

Selenium 网络驱动程序 | driver().switchTo().defaultContent() 方法未将控件从多个子 windows.

切换回父 window

我遇到的问题是 windows 个,而不是框架。当我点击父 window 上的一个按钮说 wp 时,一个新的网站 window 说 w1 正在生成,最终又生成一个 window 说 w2 ,我想切换到控制 wp所以我正在使用

driver.switchTo.defaultContent()

但它没有将控制权切换到父级 window。

有两种类似的方法可以在切换到父框架时使用,但它们之间略有不同。

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

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

如果进程打开多个浏览器标签,我们需要使用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);

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

 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');
      })

您是要切换到 window tabs 还是 iframe

for frames : 我们需要做的,

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

对于 windows :

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

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

driver.switchTo().parentFrame();