Selenium Webdriver Python 如何从所有复选框中删除勾选(如果它们被勾选)

Ria*_*ani 4 python selenium python-2.7 selenium-webdriver

我有一个网页上的复选框列表。其中一些被勾选。我正在尝试取消勾选的那些。如果选中复选框,我的代码似乎没有取消选中它们。如果我注释掉 IF 语句,它将勾选所有复选框。问题在于我的 IF 语句。它不检查复选框是否被勾选。

我的代码片段是:

    # uncheck all of the checkboxes if they are ticked
    def remove_ticks_from_all_checkboxes(self):
        checkboxes = self.driver.find_elements(By.XPATH, '//div[@id="match_configuration_add_match_tab_data_objects_fp_flags"]//input')
        for checkbox in checkboxes:
            if checkbox.is_selected == "True": # If checkbox is ticked
                checkbox.click() # to untick it
Run Code Online (Sandbox Code Playgroud)

HTML是:

<div id="match_configuration_add_match_tab_data_objects_fp_flags">
    <div class="gwt-Label matchruleheader">Gender and title flags</div>
        <span class="gwt-CheckBox" style="display: block;">
            <input id="gwt-uid-239" type="checkbox" value="on" tabindex="0"/>
            <label for="gwt-uid-239">Gender must be present in both names</label>
        </span>
        <span class="gwt-CheckBox" style="display: block;">
            <input id="gwt-uid-240" type="checkbox" value="on" tabindex="0"/>
            <label for="gwt-uid-240">Gender must be consistent in both names</label>
        </span>
        <span class="gwt-CheckBox" style="display: block;">
            <input id="gwt-uid-241" type="checkbox" value="on" tabindex="0"/>
            <label for="gwt-uid-241">Allow gender mismatch</label>
        </span>
        <span class="gwt-CheckBox" style="display: block;">
        --- some more checkboxes
        <span class="gwt-CheckBox" style="display: block;">
        --- some more checkboxes
        <span class="gwt-CheckBox" style="display: block;">
        <span class="gwt-CheckBox" style="display: block;">
        <div class="gwt-Label matchruleheader">Name flags</div>
        <span class="gwt-CheckBox" style="display: block;">
        <span class="gwt-CheckBox" style="display: block;">
        <span class="gwt-CheckBox" style="display: block;">
        <span class="gwt-CheckBox" style="display: block;">
        <span class="gwt-CheckBox" style="display: block;">
        <div class="gwt-Label matchruleheader">Other flags</div>
        <span class="gwt-CheckBox" style="display: block;">
</div>              
Run Code Online (Sandbox Code Playgroud)

如何检查我的 for 循环中是否勾选了复选框?如果勾选了复选框,那么我想点击它,以便取消勾选它。

我的 XPATH 是正确的,因为如果我删除 IF 语句。for 循环将遍历所有复选框并勾选它。

谢谢,

里亚兹

ale*_*cxe 5

is_selected 是一个返回布尔值的方法,调用它:

for checkbox in checkboxes:
    if checkbox.is_selected(): # If checkbox is ticked
        checkbox.click() # to untick it
Run Code Online (Sandbox Code Playgroud)