当前位置: 首页 > 知识库问答 >
问题:

通过按值定位复选框元素的以下标签元素,为其创建Xpath

罗睿识
2023-03-14

我已经为此工作了很长一段时间,但仍然没有找到针对我在stackoverflow中遇到的问题的答案,也没有找到自己尝试Xpath的答案。我很缺乏经验,所以我alpogise如果这是一个简单的问题,但我真的很感激任何帮助。

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

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

相应的超文本标记语言如下所示;

<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"

我尝试了以下Xpath,但没有成功;

//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]"

我再次指出,如果这是一个简单的语法/理解问题,但我非常感谢任何帮助。

共有3个答案

施学
2023-03-14

//*[@id='excludeDepotCheckBox5']/label[contains(text(),'001')]//前面的同级::输入[1]

微生恩
2023-03-14

您可以使用以下XPath:

1-检查与标签'001'相关的复选框:

//span[@id='excludeDepotCheckBox5']/label[.='001']/preceding-sibling::input[1]

2-用于选中与标签“009”相关的复选框:

//span[@id='excludeDepotCheckBox5']/label[.='009']/preceding-sibling::input[1]

注意:它将检查输入元素,它是标签元素的第一个前面的兄弟元素,在id='排除Depot CheckBox5'的span元素下,精确的innerHTML/text为'001'或'009'。

龚星洲
2023-03-14

由于“前一个同级”非常容易出错(只要HTML结构发生一点变化,它就会中断),因此这里有一个更稳定的变体(为了易读性而包装):

//span[@id = 'excludeDepotCheckBox5']//input[
    @id = //span[@id = 'excludeDepotCheckBox5']//label[normalize-space() = '001']/@for
]
 类似资料:
  • 当我运行此代码时: 我收到以下错误: org.openqa.selenium.InvalidSelectorException:无法计算xpath表达式'//输入[包含(@id,'name']'要留档此错误,请访问:http://seleniumhq.org/exceptions/invalid_selector_exception.html构建信息:版本:'2.20.0',修订版:'16008'

  • 我试图找到标签元素并用一些值填充它,但我无法得到它。我使用、和来编写以下代码。 我使用的代码如下 运筹学 这是我检查元素时收到的元素的详细信息。

  • 你知道为什么吗?

  • 我试图通过selenium单击save按钮,但是,我得到的错误是它无法定位元素。 这是网站的html部分 这是我得到的错误: NoSuchelementException:没有这样的元素:找不到元素:{“method”:“id”,“selector”:“divflashviewermain_savepdfbuttonicon”} (会话信息:chrome=74.0.3729.169)(驱动程序信息

  • 问题内容: 我有以下HTML结构: 我只想选择之前的内容。我怎样才能做到这一点?在我的内容中,越来越多的东西,因此解决方案应该是通用的。 问题答案: 据我所知,CSS没有提供将 在* 选择器 之前定位的任何选择器。您能否将其选择为()之后的? * 如您所见,这可能是您依赖CSS时可以使用的最佳选择器,尽管您可以轻松地向之前的每个类添加一个类。这样可以避免您在另一个段落和段落节之前有一个段落节的情况

  • 问题内容: 我有这个嵌套的golang结构: 当我使用值对其进行初始化并进行封送处理时,它看起来像这样: 我怎样才能摆脱的结束标记和,所以它只是看起来像? 问题答案: 没有内容 的 元素和 结束标记 在XML级别上没有区别: 和一个 空元素标签 : 要控制使用哪种格式,您必须将数据视为文本而不是XML,但最好不要担心没有区别的区别。 [为完整性而添加] …不明确和过时的建议 为了实现互操作性,对于