如何在Selenium Webdriver中使用for循环切换制表符

时间:2017-06-26 11:49:44

标签: java selenium selenium-webdriver

美好的一天。我很难解决使用Selenium WebDriver中的循环无法在标签之间切换的问题。我可以立即执行此操作,但我需要在循环中重复使用代码。

出现错误:

“线程中的异常”主“org.openqa.selenium.NoSuchWindowException:无法找到窗口”

我的代码可以找到所有元素,在新标签中打开链接,关闭它。但是,它无法再使用下一个元素执行此操作。

这是我的代码(我正在使用Firefox):

List<WebElement> allElements = driver.findElements(By.className("_4zhc5"));
    int s = allElements.size();

    System.out.println("total users to check: " + allElements.size());
    for (int i = 0; i < s; i++) {



        allElements = driver.findElements(By.className("_4zhc5"));
        String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL, Keys.RETURN);
        allElements.get(i).sendKeys(selectLinkOpeninNewTab);


        for (String winHandle : driver.getWindowHandles()) {
            driver.switchTo().window(winHandle);
            Thread.sleep(3000);

        }



         driver.close();
         Thread.sleep(2000);

    }

我还使用jsfiddle创建了一个原型页面。第二次尝试执行代码时出现错误。只是脚本没有点击另一个名为“可爱”的元素

谢谢你看看!

1 个答案:

答案 0 :(得分:0)

您需要切换回链接所在的原始窗口。

  1. 如果链接
  2. ,请单击一个
  3. 切换到该标签
  4. 关闭标签
  5. 切换回默认窗口,您将获得链接
  6. 最简单的方法是存储&#34;原始&#34;窗口并一直切换回那个窗口。 winHandleBefore = driver.getWindowHandle();

    关闭标签时

    driver.close(); 
    

    driver.switchTo().window(winHandleBefore)