java - Webdriver隐式等待动态ID

标签 java webdriver selenium-webdriver

我在 Java 中使用 Webdriver,我需要等待具有动态 ID 的元素显示在网页上。

例如,我对于隐式等待有以下语句: WebDriverWait 等待 = new WebDriverWait(驱动程序, 30); wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("dynamicID")))

dynamicID 是我正在等待的元素 ID 的前缀,通常它带有一个我无法真正预测的数字。

这里有一些很好的答案 Finding an element by partial id with Selenium in C# .

我尝试将代码更改为

wait.until(ExpectedConditions.visibilityOfElementLocated(By.id(^="dynamicID")))

它不起作用。

我尝试使用页面工厂:

@FindBy(id ^= "dynamicID")
private WebElement something;

而且它也不起作用。

所以我有疑问: 1. 如何在隐式等待语句中使用 ID 部分匹配? 2.如果我使用页面工厂,并假设@FindBy正在工作,我如何在隐式等待中使用这个元素something

wait.until(ExpectedConditions.visibilityOfElementLocated(something)) 

不起作用。

提前非常感谢。

最佳答案

您可以使用 By.xpath,并使用 xpath starts-with 函数,如下所示:

wait.until(ExpectedConditions.visibilityOfElementLocated(
    By.xpath("//*[starts-with(@id, 'dynamicID')]")));

* 是代表任何元素类型的通配符。如果您知道该标签,则可以替换它。例如,如果它是一个 div:

wait.until(ExpectedConditions.visibilityOfElementLocated(
    By.xpath("//div[starts-with(@id, 'dynamicID')]")));

关于java - Webdriver隐式等待动态ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19968877/

相关文章:

docker - Chromedriver无法与Alpine基本Docker镜像一起使用

java - 如何使用带有 Java 的 Selenium WebDriver 单击按钮?

java - Selenium Web 驱动程序测试 Web 元素已更新

java - 仅使用递增、递减、循环和 =0 制作 pow(x1, x2) 函数

java - java.lang.IllegalAccessError:尝试访问方法com.google.common.util.concurrent.SimpleTimeLimiter。使用Selenium-Java 3.5.1或更高版本时

java - 编写任务执行(预/后)脚本 [Gradle + IntelliJ]

c# - 关于提高使用 Selenium Webdriver 迭代表行的方法速度的建议

python - 使用 Selenium 在 div 中进行内容搜索的问题

java - 从给定节点提取子节点数据

java - 上传 Excel 文件时内容类型与预期不符