java - 复选框元素的 Xpath 通过按值定位它在标签元素之后

标签 java html selenium xpath wicket

我已经在这方面工作了很长一段时间,但仍然没有在 stackoverflow 或我自己试验 Xpath 中找到特定于我的问题的答案。我没有经验,所以如果这是一个简单的问题,我会很抱歉,但我真的很感激任何帮助。

我正在使用 Selenium 测试使用 Wicket 的网络应用程序。我需要 Xpath 到与相应标签相关的复选框。这是因为我需要能够输入标签上显示的值,并根据标签文本(例如“001”)找到相关的复选框,因为复选框 ID 与值不匹配。

下面的模型显示了复选框及其相应的标签;

mockup

对应的HTML如下所示;

<span wicket:id="excludeDepotCheckBox" id="excludeDepotCheckBox5">

  <input name="adminPreferenceSection:excludeDepotCheckBox" type="checkbox" value="0" id="excludeDepotCheckBox5-adminPreferenceSection:excludeDepotCheckBox_0">
  <label for="excludeDepotCheckBox5-adminPreferenceSection:excludeDepotCheckBox_0">001</label>

  <br>

<input name="adminPreferenceSection:excludeDepotCheckBox" type="checkbox" value="1" id="excludeDepotCheckBox5-adminPreferenceSection:excludeDepotCheckBox_1">
  <label for="excludeDepotCheckBox5-adminPreferenceSection:excludeDepotCheckBox_1">009</label>

  <br>

</span>

我还面临的另一个问题是,Xpath 必须包含这样一个事实,即它位于 html 中显示的范围内,因为页面上还有其他 3 组复选框具有相同的值,因此它必须特定于每个范围示例:

id="excludeDepotCheckBox5"

我已经尝试了以下 Xpaths 无济于事;

//span[@id='excludeDepotCheckBox5' and contains(., '009')]"

"//*[@id='excludeDepotCheckBox5' and ./label/text()='009']/preceding-sibling::*[@name='adminPreferenceSection:excludeDepotCheckBox']

//*[@id='excludeDepotCheckBox5' and ./label/text()='009']/preceding-sibling::input[1]"

如果这是一个简单的语法/理解问题,我再次表示歉意,但我真的很感激任何帮助。

最佳答案

由于“preceding-sibling”非常容易出错(只要 HTML 结构发生一点变化,它就会崩溃),这里有一个更稳定的变体(为了易读性而包装):

//span[@id = 'excludeDepotCheckBox5']//input[
    @id = //span[@id = 'excludeDepotCheckBox5']//label[normalize-space() = '001']/@for
]

关于java - 复选框元素的 Xpath 通过按值定位它在标签元素之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27920644/

相关文章:

java - Selenium By.className() -> IndexOutOfBoundsException : Index: 0, 大小:0

html - Codeception 无法点击它之前看到的元素

Uniobjects for Java 的 Javadoc

java - SQLite:使用索引进行查询

java - 验证标签是否在另一个 Java 正则表达式中

html - 如何使 div 适合更大的 div 但保持它们的大小比例?

html - 在vba selenium中循环没有id的无序列表

java - 如何模拟由类生成器创建的对象?

jquery - 悬停缩略图时对缩略图和 H1 链接的过渡效果

javascript - 如何将div的旋转信息获取到js中的变量中