我正在尝试从li
中选择一个值(Bellevue) (它看起来像一个下拉菜单,但事实并非如此)。问题是它的 id
每次页面加载时都会发生变化。
这是屏幕截图:
这次的id是:ui-id-23
,但是数字 23 下次会改变,所以这不起作用。如果我展开 <a id="ui-id-23..."
我得到了“Bellevue”这个名字,但每个字符都被 标记包围。
我在类名之后找不到它,因为 li 中的两个值具有相同的类,ui-menu-item
.
我在 xpath: "//a[contains(text(),'Bellevue')]"
之后尝试过但我收到错误:Unable to locate element...
你知道这个问题有什么解决方案吗?我在 Java 和 TestNG 中使用 Selenium Webdriver。 谢谢!
更新
所以我设法通过使用找到该元素:
WebElement value = driver.findElements(By.cssSelector("a[id^='ui-id-']")).get(3);
value.click();
.
但是在我的应用程序中,我使用页面对象,并且使用 @FindBy(how.HOW.....) 来处理元素。你知道如何将 .get(3) 与 @FindBy 一起使用吗?
最佳答案
您想要在 ID 上使用 CSS 选择器:
a[id^='ui-id-']
这表示“查找 ID 以 ui-id-
开头的所有 a
元素”
如果您想查找第二项,请执行以下操作:
driver.findElements(By.cssSelector("a[id^='ui-id-']"))[1]
[1]
将选择页面上的第二项。
关于java - Selenium Webdriver - 从 li/a 查找动态 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23366674/