【问题标题】:How to click on a parent element如何单击父元素
【发布时间】:2016-03-04 10:19:48
【问题描述】:

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

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

目标元素是&lt;label&gt;,我可以使用

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

但问题是具有class="btn btn-primary" 属性的类似元素很少。所以我想通过添加对子&lt;input&gt; 元素的引用来使我的xpath 更具体。

然而,

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

将点击 &lt;input&gt;,但不会点击 &lt;label&gt; 元素。

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

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

【问题讨论】:

    标签: python selenium xpath selenium-webdriver


    【解决方案1】:

    您可以简单地使用parent 轴。尝试以下 XPath。

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

    【讨论】:

    • 如果我的输入没有 ID,但只有一个名字,这可以工作吗?
    • @roastbeeef - 在解决方案中,使用 name 代替 id。这应该可以解决问题。
    【解决方案2】:

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

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

    所以你可以使用:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-05
      • 2020-12-08
      • 2010-11-02
      相关资源
      最近更新 更多