我对xpath比较陌生,我在选择复选框时遇到了问题。
以下表达式正常
:xpath=//div/label[@for='chkCat2']
但我需要根据标签名称选择一个复选框(在这种情况下为音乐)
不幸的是,这个 -
xpath=.//div[label[contains(text(),'Music')]
点击标签,而不是复选框。
怎么可能这样做?我也试过这个,但它无法找到元素:
xpath=.//div[label[contains(text(),'Music')]/preceding-sibling::label]
这是代码的示例:
<input name="ctl00$cphContent$ThreeMedia$categoriesRepeater$ctl01$ctl00"
data-bind="attr:{'id': 'chkCat' + id, 'data-id': id}, checked: selected" id="chkCat2" data-id="2" type="checkbox">
<label data-bind="attr:{'for': 'chkCat' + id}" for="chkCat2" class=" firepath-matching-node"></label>
<label class="chkbox-content margin-bottom-0" data-bind="text: name">Music</label>
感谢您的帮助
答案 0 :(得分:0)
请尝试以下提到的xpath
//label[text()= 'Music']/..//preceding-sibling::input[@id='chkCat2']
xpath的说明:使用text
方法和<label>
代码,并使用<input>
继续preceding-sibling keyword
代码。
答案 1 :(得分:0)
但是我需要根据标签名称选择一个复选框(在这种情况下是音乐)
假设div
是所提供的checkbox
元素的父元素,请尝试使用以下xpath
: -
.//div[normalize-space(.)='Music']/input
或更具体的
.//div[normalize-space(.)='Music']/input[@type='checkbox']
再来一次
.//div[label[text() = 'Music']]/input