从表中读取数据时“无法定位元素”错误,再现率为3/10

时间:2016-08-23 12:16:22

标签: java selenium

我已经编写了以下代码来获取列中的数据:

String[] correct = new String[101];
        String a = "//*[@id='mainData']/table/tbody/tr[";
        String b = "]/td[2]";
        int[] comparison = new int[101];
        for (int i = 1; i <= 100; i++) {
            String c = a + i + b;
            WebElement element = driver.findElement(By.xpath(c));
            correct[i] = element.getText();
            if (correct[i].equals("Order Request Import")) {
                String[] orderButton = new String[101];
                String e = "//*[@id='mainData']/table/tbody/tr[";
                String f = "]/td[1]/div/button";
                String g = e + i + f;
                orderButton[i] = driver.findElement(By.xpath(g)).getText();
                comparison[i]=Integer.parseInt(orderButton[i].substring(4));
            }
        }

问题是10个测试中有3个在WebElement element = driver.findElement(By.xpath(c));行失败,而其余测试则像魅力一样。知道为什么会这样,或者如何改进我的代码,以便它始终从表中读取?

1 个答案:

答案 0 :(得分:0)

当您要定位元素时,它可能会出现在DOM上,这就是为什么您的测试失败了一段时间。

为了更好的方式,你应该在这里实现WebDriverWait,等到DOM上的元素出现,然后执行下面的操作: -

WebDriverWait wait = new WebDriverWait(driver, 10);

WebElement element = wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath(c)));