Selenium java窗口处理程序不能在循环的第二次迭代中工作

时间:2015-07-30 06:34:05

标签: java selenium

这整个代码包含在for循环中。问题是,在循环的第一次迭代中,它执行操作没有问题。但是,在第二次操作时,它没有切换到新窗口,我最终得到“窗口”“不存在”的错误。这是预期的行为吗?

<item name="primColor">@android:color/transparent</item> 

1 个答案:

答案 0 :(得分:0)

您没有在循环中执行操作,循环完成其迭代然后转到您的操作。当您在多个窗口上执行操作时,必须知道您要在哪个窗口执行哪个操作。因此,如果您对每个窗口有不同的操作,那么使用条件语句,或者如果您想在每个窗口上执行相同的操作,请遵循以下代码

// Switch to new window opened
    for (String winHandle : driver.getWindowHandles()) {
        driver.switchTo().window(winHandle);
        // Perform the actions on new window
        driver.findElement(By.id("tier1_l1discountamt")).clear();
        driver.findElement(By.id("tier1_l1discountamt")).sendKeys(
                discountAmount);
        driver.findElement(By.id("save")).click();

    }

如果你对每个窗口有不同的操作,那么用户就像belwo条件语句:

// Switch to new window opened
    for (String winHandle : driver.getWindowHandles()) {
        driver.switchTo().window(winHandle);
         if(driver.getTitle().equals("Window Title"){

        // Perform the actions on new window
        driver.findElement(By.id("tier1_l1discountamt")).clear();
        driver.findElement(By.id("tier1_l1discountamt")).sendKeys(
                discountAmount);
        driver.findElement(By.id("save")).click();
       }

    }

我希望它会对你有所帮助。