如何通过Selenium切换到中的新窗口

kiayqfof  于 2022-12-18  发布在  其他
关注(0)|答案(2)|浏览(173)

我有一个第三方集成为贝宝。当我点击下订单按钮,它会从下订单页面导航到贝宝页面我。你能让我知道它将如何工作。我已经尝试了下面的代码,我会重定向到贝宝页面,但新窗口出现,而不是同一页。请让我知道我将如何能够留在同一屏幕上。

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

s8vozzvw1#

要切换到 * 新窗口 *,您需要引发 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);
    }
vhmi4jdf

vhmi4jdf2#

我有一个使用量角器的selenium测试环境,其中有一个driver指示webdriver。我在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;
      });
  }

相关问题