我在 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/