selenium复选框在python3上不起作用

时间:2016-09-21 05:20:43

标签: python-3.x selenium-webdriver

我正在测试是否选中了复选框。

如何使用selenium Python3检查复选框的状态?

driver.find_element_by_id('privacyCheck1').is_selected()
driver.find_element_by_id('privacyCheck1').click()
driver.find_element_by_xpath(".//*[@id='privacyCheck1']").click()


  <div class="mail_privacy_check">
    <p class="comment">
      <input type="checkbox" id="privacyCheck1" class="privacyCheck">
      <label for="privacyCheck1">...</label>
    </p>
    <div class="tableware typecolor">...</div>
  </div>
</div>

1 个答案:

答案 0 :(得分:0)

由于设计问题或其他未知问题,某些时间WebElement::click()无法正常工作。

因此,在这种情况下,selenium还提供了使用JavaScript代码静默执行某些操作以摆脱问题。

为此,有一个方法名称execute_script(),您可以在其中直接调用当前窗口框架/ iframe上的JavaScript代码以解决您的问题。在此方法中,第一个参数输入是JavaScript代码,第二个参数是对象的数组,可以在JavaScript代码中用作JavaScript变量。在JavaScript代码中,此对象输入数组包含arguments变量。

因此,您可以执行以下点击: -

driver.execute_script("arguments[0].click()", driver.find_element_by_id('privacyCheck1'))

注意: - JavaScript注入HTMLElement.click()不应在测试环境中使用。它违背了测试的目的。首先是因为它不会像真正的click (focus, blur, mousedown, mouseup...)那样生成所有事件,因为它并不能保证真实用户可以与元素进行交互。但是要摆脱这个问题,你可以将它作为一种替代解决方案。