我有一个网页,其中很少有文本字段需要使用 Selenium WebDriver 填充一些值。但我无法使用 selenium framwework 中提供的 API 获取这些项目,因为 ID 会动态变化。
例如,其中一个文本字段具有以下 ID
<input id="order_unit_line_rate_806099_unit_price" type="text" value="" uniqueattr="Dynamic Site Accelerator / Dynamic Site Accelerator / Platform Fee / / Price" size="10" onchange="javascript:numberFormatValid('order_unit_line_rate_806099_unit_price', parseI18nNumber($('order_unit_line_rate_806099_unit_price').value, ',', '.'), 5, '.');" name="order_unit_line_rate[806099][unit_price]">
其中,作为 id 一部分的数字 806099 对于每个新页面和每个新文本框都有所不同。我在使用 findElements(By.id()) API 时没有任何运气。
有人可以建议任何识别这些元素的方法吗?
我使用 eclipse 作为编辑器,java 作为客户端驱动程序,selenium webDriver 作为自动化框架。
谢谢 基兰
最佳答案
您可以使用 findElementsByTagName,然后循环遍历每个返回的元素,检查其 ID 与正则表达式:
public static WebElement findElementByRegexId(FindsByTagName ctx, String tagName, String regex) {
List<WebElement> l = ctx.findElementsByTagName(tagName);
for (WebElement e : l) {
if (e.getAttribute("id").matches(regex)) {
return e;
}
}
return null;
}
关于java - 如何使用动态 ID 获取这些输入字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11257879/