如何单击父元素

时间:2016-03-04 10:19:48

标签: python selenium xpath selenium-webdriver

我有HTML元素(隐藏单选按钮)

<label class="btn btn-primary">
     <input class="type_radio" name="type" id="optionWIDGET" autocomplete="off" value="WIDGET" type="radio">
     WIDGET
</label>

目标元素是<label>,我可以使用

driver.find_element_by_xpath('//label[@class="btn btn-primary"]').click()

但问题是,属性class="btn btn-primary"的类似元素更少。因此,我希望通过添加对子xpath元素的引用来使我的<input>更具体。

然而,

driver.find_element_by_xpath('//label[@class="btn btn-primary"]/input[@id="optionWIDGET"]').click()

将点击<input>,但不会点击<label>元素。

问题是:如果我知道子元素的定位器,如何点击父元素?

PS。按相同的类名搜索elementS,然后按其索引单击列表中的元素是不可接受的

2 个答案:

答案 0 :(得分:1)

您只需使用parent轴即可。尝试以下XPath。

'//input[@id="optionWIDGET"]/parent::label'

答案 1 :(得分:1)

您可以使用以下XPath点击label的父input

//input[@id="optionWIDGET"]/parent::label

所以你可以使用:

driver.find_element_by_xpath('//input[@id="optionWIDGET"]/parent::label').click()

请注意,由于id属性在网页上是唯一的,因此您可以在input开头选择所需的label[@class="btn btn-primary"]元素而不使用XPath