如何根据标签文本单击复选框

时间:2017-07-10 20:39:52

标签: python selenium selenium-chromedriver

我尝试使用xPath点击“是”复选框,但我似乎无法弄明白。我试过了

driver.find_element_by_xpath(".//label[following-sibling::input[contains(., 'Yes')]]").click() .

但这没有用。 过去我用过

driver.find_element_by_xpath("//input[@id=(//label[text()=\"Phone Number\"]/@for)]")

找到文字字段,但我还没能为复选框做同样的事情。  任何帮助将非常感激。

<dl data-validation="{&quot;checkboxes&quot;:
{&quot;required&quot;:true,&quot;and&quot;:
[{&quot;name&quot;:&quot;checkboxes&quot;,&quot;operator&quot;:&quot;checkboxes&quot;,&quot;options&quot;:{&quot;message&quot;:&quot;must select a value&quot;}}]}}" class="form">
  <dt><div class="form_response_label required" id="responses_2865807_label">Are you an Undergraduate Student?</div></dt>
<input id="responses_2865807_" name="responses[2865807][]" type="hidden">
  <div class="form-checkbox">
    <label for="responses_2865807_4737821">
      <input id="responses_2865807_4737821" name="responses[2865807][]" type="checkbox" value="4737821">
      Yes
</label>      </div>
  <div class="form-checkbox">
    <label for="responses_2865807_4737822">
      <input id="responses_2865807_4737822" name="responses[2865807][]" type="checkbox" value="4737822">
      No
</label>      </div>
<small><span class="right char_count"></span></small><div class="form-constraints"><div class="validation-summary" style="display: none;"><strong>Validation</strong><div class="explanation">Valid input may include: must select a value</div></div></div></dl>

我的主要关注点是在以下代码中检查是:

<label for="responses_2865807_4737821">
      <input id="responses_2865807_4737821" name="responses[2865807][]" type="checkbox" value="4737821">
"
      Yes
"
</label>

现在我想出了如何查找&#34;是&#34;的检查,我怎样才能选择&#34;是&#34;指定前面的标签,以防我遇到需要根据问题在“是”和“否”之间切换的情况? 因此,在上面的示例代码中,我将澄清我正在寻找&#34;是&#34;标有&#34的复选框;你是本科生吗?&#34;

1 个答案:

答案 0 :(得分:1)

找到答案!只需要添加..而不是。

driver.find_element_by_xpath("//label/input[contains(..,'Yes')]").click()