java—等待窗口打开后再尝试切换到它

t9eec4r0  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(325)

我有一个问题,我的测试,我选择一个按钮,然后切换到windwo打开后,我选择了按钮,问题是我一直没有得到帧异常和出界异常。
我的代码是:

clickWithActions(driver, launchNote);
        sleepForTime(6000);
        Set<String> handles = driver.getWindowHandles();

        List list = Arrays.asList(handles.toArray());
        driver.switchTo().window(list.get(1).toString());
        sleepForTime(6000);
        driver.manage().window().maximize();
        driver.manage().window().setSize(new Dimension(1920, 1080));

        break;

有没有什么方法可以让我等待这个窗口先出现而不用等待很长时间?

0g0grzrc

0g0grzrc1#

有这个 numberOfWindowsToBe() 在这里听起来合适的预期等待条件:

clickWithActions(driver, launchNote);

// wait for the number of windows to increase
new WebDriverWait(driver, 15).until(ExpectedConditions.numberOfWindowsToBe(2));
a64a0gku

a64a0gku2#

演出前 clickWithActions() 您需要收集初始的windowhandle,一旦执行了click,就需要为其导入webdriverwait numberOfWindowsToBe(2) . 因此,您的有效代码块将是:

String first_handle = driver.getWindowHandle();
clickWithActions(driver, launchNote);
new WebDriverWait(driver,10).until(ExpectedConditions.numberOfWindowsToBe(2));
Set<String> allHandles = driver.getWindowHandles();
for(String winHandle:allHandles)
{
    if (!first_handle.equalsIgnoreCase(winHandle)
    {
    driver.switchTo().window(winHandle);
    }
}

参考文献

您可以在中找到一些相关的详细讨论:
selenium将焦点切换到选项卡,单击链接后打开该选项卡
使用selenium的windowhandles跟踪和遍历选项卡和窗口的最佳方法

相关问题