我已经搜索了一周如何使用Python检查Selenium WebDriver中的复选框是否被选中,但我只找到了来自JAVA的算法。我已阅读 WebDriver 文档,但没有答案。
大家有解决办法吗
有一个名为
is_selected()
的 WebElement 属性,对于复选框,这指示是否选中它。因此,您可以通过执行以下操作来验证它是否已选中/未选中:
driver.find_element_by_name('<check_box_name>').is_selected()
或
driver.find_element_by_id('<check_box_id>').is_selected()
我记得遇到过同样的问题,无法找到文档。一旦您知道名称,就更容易找到(这里是一些文档,
is_selected
位于底部),但我尝试为 Selenium 对象查找不同选项/属性的方法就是删除 dir(some_object)
在代码中查看出现的选项(这就是 is_selected
的出现方式)。
我正在使用
driver.find_element_by_name("< check_box_name >").is_selected()
我找到了另一种可行的方法,但在里面使用了javascript。
def is_checked(self, driver, item_id):
checked = driver.execute_script(
f"return document.getElementById('{item_id}').checked"
)
return checked
agreed = driver.find_element_by_id("checkBoxAgreed")
if agreed.get_attribute("checked") != "true":
agreed.click()
WebElement checkbox = driver.findElement(By.id("checkboxId"))
(或)
checkbox = self.driver.find_element_by_css_selector(checkboxSelector)
,然后
if checkbox.isSelected():
print 'Checkbox is selected'
未选中该复选框时,xpath 或 id 与选中时不同 这意味着,在查找元素时,我们需要
查找 xpath 中选中和未选中状态下存在的一些常见文本
用它来定位物体
然后比较选中复选框和未选中复选框的xpath
if(选中复选框的 xpath): 经过 别的: chkbox.click()
def assert_checkbox_status (id, expect):
global browser
field = browser.find_element_by_id(id)
assert field.get_attribute ('checked')== expect
使用示例:
assert_checkbox('activate', True) ==> assert if checkbox is checked
assert_checkbox('activate', None) ==> assert if checkbox is unchecked