40

我一直在搜索如何使用 Python 检查是否在 Selenium WebDriver 中选中了一个复选框,但我只找到来自 JAVA 的算法。我已阅读 WebDriver 文档,但对此没有答案。
有人有解决方案吗?

4

6 回答 6

87

有一个名为 的 WebElement 属性is_selected(),对于复选框,它指示是否选中它。因此,您可以通过执行以下操作来验证它是否被选中/取消选中:

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出现的)。

于 2013-01-21T16:25:03.223 回答
6

我正在使用driver.find_element_by_name("< check_box_name >").is_selected()

于 2013-08-06T09:14:03.663 回答
4

我找到了另一种可行的方法,但在里面使用了 javascript。

def is_checked(self, driver, item_id):
  checked = driver.execute_script(
    f"return document.getElementById('{item_id}').checked"
  )
  return checked
于 2013-01-21T16:54:51.340 回答
2
agreed = driver.find_element_by_id("checkBoxAgreed")
if agreed.get_attribute("checked") != "true":
    agreed.click()
于 2020-04-03T23:27:07.497 回答
0
WebElement checkbox = driver.findElement(By.id("checkboxId"))

(或者)

checkbox = self.driver.find_element_by_css_selector(checkboxSelector)

, 然后

if checkbox.isSelected():
    print 'Checkbox is selected'
于 2021-06-03T10:35:32.877 回答
-3
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
于 2013-04-25T14:44:39.170 回答