首页 > 解决方案 > 我将如何处理我的代码中的多个窗口?

问题描述

在此处输入图像描述java

List<WebElement> group = driver.findElements(By.xpath("//*[@ng-repeat='employeeGroup in employeeGroups']"));
for (int k = 0; k < group.size(); k++) {
        if (group.get(k).getText().toLowerCase().startsWith(shuttleObj.getGroupName().toLowerCase())) {
            group.get(k)
                    .findElement(
                            By.xpath("//body//div[" + (k + 2) + "]//li[1]/ul/a/i"))
                    .click();
            Thread.sleep(500);

            String firstparent = driver.getWindowHandle();
            for (String firstchild : driver.getWindowHandles()) {
                driver.switchTo().window(firstchild);
                Thread.sleep(1000);
                driver.findElement(By.xpath(props.getProperty("thirdEmployee"))).click();
                Thread.sleep(200);
                driver.findElement(By.xpath(props.getProperty("fourthEmployee"))).click();
                Thread.sleep(200);
                driver.findElement(By.xpath(props.getProperty("selectedEmployeeTab"))).click();
                Thread.sleep(200);
            }

            driver.switchTo().window(firstparent);
            Thread.sleep(2000);
            group.get(k).findElement(By.xpath("//body//div[" + (k + 2) + "]//li[2]/ul/a/i")).click();
            String secondparent = driver.getWindowHandle();
            for (String secondchild : driver.getWindowHandles()) {
                driver.switchTo().window(secondchild);
                Thread.sleep(1000);
                driver.findElement(By.xpath(props.getProperty("thirdEmployee"))).click();
                Thread.sleep(200);
                driver.findElement(By.xpath(props.getProperty("fourthEmployee"))).click();
                Thread.sleep(200);
                driver.findElement(By.xpath(props.getProperty("selectedEmployeeTab"))).click();
                Thread.sleep(200);
                driver.switchTo().window(secondparent);
            }
        }

我可以点击第一个孩子,但我不能点击第二个孩子。

这给出的错误是:消息: stale element reference: element is not attached to the page document

标签: javaseleniumvisual-studio-codetestng

解决方案


在切换到循环中的第二页之前,您必须切换到基本页面,如下面的代码所示。

for (String secondchild : driver.getWindowHandles()) {
                driver.switchTo().window(secondchild);
                Thread.sleep(1000);
                driver.findElement(By.xpath(props.getProperty("thirdEmployee"))).click();
                Thread.sleep(200);
                driver.findElement(By.xpath(props.getProperty("fourthEmployee"))).click();
                Thread.sleep(200);
                driver.findElement(By.xpath(props.getProperty("selectedEmployeeTab"))).click();
                Thread.sleep(200);
                driver.switchTo().defaultContent();
                driver.switchTo().window(secondparent);
            }

推荐阅读