如何通过相应的标签名称选择一个checbox

时间:2017-02-03 12:19:59

标签: selenium xpath automation

我对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>

感谢您的帮助

2 个答案:

答案 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