如何通过Selenium切换到新窗口

问题描述 投票:0回答:2

我有 1 个第三方集成如 Paypal。当我单击“下订单”按钮时,它会将我从“下订单”页面导航到 paypal 页面。 您能告诉我它将如何运作吗?我已尝试下面的代码,我将重定向到 Paypal 页面,但出现新窗口而不是同一页面。 请让我知道如何才能保持在同一屏幕上。

String handle= driver.getWindowHandle();
System.out.println(handle);
driver.findElement(By.name("New Message Window")).click();
Set handles = driver.getWindowHandles();
System.out.println(handles);
for (String handle1 : driver.getWindowHandles()) {
    System.out.println(handle1);
    driver.switchTo().window(handle1);
}
java selenium selenium-webdriver window-handles webdriverwait
2个回答
0
投票

要切换到新窗口,您需要诱导WebDriverWait,并将ExpectedConditions设置为

numberOfWindowsToBe()
,如下所示:

String parent_handle= driver.getWindowHandle();
System.out.println(parent_handle);
driver.findElement(By.name("New Message Window")).click();
new WebDriverWait(driver,10).until(ExpectedConditions.numberOfWindowsToBe(2));
Set<String> handles = driver.getWindowHandles();
System.out.println(handles);
for(String handle1:handles)
    if(!parent_handle.equals(handle1))
    {
        driver.switchTo().window(handle1);
        System.out.println(handle1);
    }

0
投票

我有一个使用量角器的硒测试环境,其中会有一个

driver
指示网络驱动程序。我在 js 代码中使用
selenium-webdriver
npm 包,并且我有一个在新旧选项卡/弹出窗口之间切换的功能:

goToTab(driver, tab) {
    if (tab !== 1 || tab !== 0) {
      throw new Error(`Tab ${tab} doesn't exist`);
    }
    return driver
      .then(() => driver.getAllWindowHandles())
      .then((handles) => {
        driver.switchTo().window(handles[tab]);
      })
      .catch((err) => {
        console.error('error in goToTab: ' + err);
        throw err;
      });
  }
© www.soinside.com 2019 - 2024. All rights reserved.