我在Java中使用Webdriver,我需要等待一个具有动态ID的元素出现在web页面上。
例如,对于隐式等待,我有以下语句: WebDriverWait wait =新WebDriverWait(驱动程序,30);
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)) 不管用。
提前谢谢。
发布于 2013-11-14 16:37:52
您可以使用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')]")));发布于 2013-11-14 09:05:24
可以对id使用部分匹配,但必须使用xpath或css选择器。
wait.until(ExpectedConditions.visibilityOfElementLocated(By.CssSelector("tag[id^='dynamicID']")))其中tag是元素的标记。
https://stackoverflow.com/questions/19968877
复制相似问题