1

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

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

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

这里有一些很好的答案Find 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)) 

不起作用。

首先十分感谢。

4

2 回答 2

1

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

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

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

wait.until(ExpectedConditions.visibilityOfElementLocated(
    By.xpath("//div[starts-with(@id, 'dynamicID')]")));
于 2013-11-14T16:37:52.663 回答
0

您可以对 the 使用部分匹配,id但您必须使用 an xpathorcss选择器。

wait.until(ExpectedConditions.visibilityOfElementLocated(By.CssSelector("tag[id^='dynamicID']")))

tag元素的标签在哪里。

于 2013-11-14T09:05:24.753 回答