gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 07:43:31 24 4
gpt4 key购买 nike

我已经在这方面工作了很长一段时间,但仍然没有在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com