我已经编写了以下代码来获取列中的数据:
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));
行失败,而其余测试则像魅力一样。知道为什么会这样,或者如何改进我的代码,以便它始终从表中读取?
答案 0 :(得分:0)
当您要定位元素时,它可能会出现在DOM
上,这就是为什么您的测试失败了一段时间。
为了更好的方式,你应该在这里实现WebDriverWait
,等到DOM
上的元素出现,然后执行下面的操作: -
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath(c)));