【发布时间】:2013-11-18 03:32:35
【问题描述】:
我在 Java 中使用 WebDriver。
我想从下面的金额字段中获取所有金额值,所以我打算循环遍历每个表格行,并查找是否选中了复选框,将金额设置为定义的数字。
示例源代码可在此处找到: http://eric-lin.net/upload/index.php
我使用以下Java方法查找金额字段值:
public void fillInAllAmountForSelectedItems() {
List<WebElement> allItems = driver
.findElements(By
.xpath("//table[@id = 'bulkPaymentForm:itemTable']//tbody[@id = 'bulkPaymentForm:itemTable:tbody_element']//tr[contains(@class, 'handCursor row-border tranItemRow')]"));
System.out.println(allItems.size());
//return 3, expected
waitTimer(2, 1000);
for (WebElement item : allItems) {
System.out.println(item.findElement(By.xpath("//td[4]"))
.getAttribute("Value"));
}
}
大多数时候,foreach 循环会因为过时元素异常而失败。我不明白,因为 DOM 没有改变。
当它工作时,foreach 循环不打印任何内容,因此看起来它没有正确定位元素。
我该怎么做才能修复它,我需要做什么才能实现此功能的目的,为所有检查项目填写金额值?
非常感谢。
【问题讨论】:
-
你试过添加
wait()函数吗?如果您使用的是eclipse,请尝试逐步执行(调试模式) -
请注意,
td中的input字段将包含金额,而不是td本身。
标签: java selenium webdriver selenium-webdriver