我正在测试是否选中了复选框。
如何使用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>
答案 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...)
那样生成所有事件,因为它并不能保证真实用户可以与元素进行交互。但是要摆脱这个问题,你可以将它作为一种替代解决方案。