java - Selenium Webdriver - 从 li/a 查找动态 id

标签 java dynamic find webdriver

我正在尝试从li中选择一个值(Bellevue) (它看起来像一个下拉菜单,但事实并非如此)。问题是它的 id每次页面加载时都会发生变化。 这是屏幕截图:

enter image description here

这次的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/

相关文章:

java - 通过ByteBuffer传输字符串

c++ - 如何从动态加载库中执行未知函数?

mysql - 使用动态 SQL 将行转换为列

linux - 查找并删除所有在某个时间未修改的已关闭文件

bash - 提高查找性能

Android:查找动态创建 View 的ID

java - 拆分字符串 ('_' 作为分隔符)

java - 尝试运行简单的 Java 代码时出现 UnsupportedClassVersion 错误

java - 在 Android 应用程序中随机生成有意义(有效)的英文单词

C# 动态加载程序集