java - 如何使用动态 ID 获取这些输入字段

标签 java selenium-ide selenium-firefoxdriver

我有一个网页,其中很少有文本字段需要使用 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/

相关文章:

testing - "VerifyTextPresent"为 Selenium IDE 返回不正确的结果

Python Selenium - FireFox 网络驱动程序配置文件首选项中可能的键是什么

selenium - Firefox WebDriver 挂起等待页面加载

java - KeyListener 中出现意外的 StackOverflowError

Java - 扩展一个类的类,并且具有一个扩展另一个类的组件的组件

java - 如何在Intellij IDEA 15中用Tomcat8运行 "hello world"JSP页面?

css - Selenium 记录和回放一个 css 元素

java - DataNucleus Enhancer 能否处理类路径中 jar 中的类?

selenium-ide - 验证 Selenium IDE 中的输入文本元素不为空

python - 键盘无法访问 Selenium 元素