【问题标题】:No action to select multiple checkboxes with Selenium and Python没有使用 Selenium 和 Python 选择多个复选框的操作
【发布时间】:2017-01-12 17:00:29
【问题描述】:

我的目标:

当我访问特定页面时,我需要点击 10 个复选框

我的代码:

def select_checkbox(self):

    checkboxes = self.find_elements(EventsLocators.CHECKBOX_SELECTOR)

    for each_checkbox in checkboxes:

        each_checkbox.click()

我的问题:

测试结果显示成功,但没有选中复选框

我的定位器:

CHECKBOX_SELECTOR = (By.CSS_SELECTOR, "Input[type='checkbox']")

HTML:

<span class="left">
<input id="id_qa-timesheets_facilitator_sign_complete" name="qa-timesheets_facilitator_sign_complete" type="checkbox">
<label>Time sheets complete with team lead sign off</label>
<br>
<span class="help_text"></span>
</span>

【问题讨论】:

  • 所以您的定位器可能是错误的?显示 HTML 以及您的确切定位器
  • @Andersson 我的问题已更新。
  • print checkboxes 真的返回 10 个网络元素吗?

标签: python python-2.7 selenium selenium-webdriver


【解决方案1】:

首先检查print checkboxes是否真的显示了10个网络元素。如果是这样并且您仍然无法单击复选框,请尝试使用JS 中的click() 方法而不是常用方法(有时常用click() 不起作用):

def select_checkbox():
    checkboxes = driver.find_elements_by_css_locator('input[type="checkbox"]')
    for each_checkbox in checkboxes:
        if not each_checkbox.is_selected(): # just to be sure that you make check, but not uncheck
            driver.execute_script('arguments[0].click()', each_checkbox)

由于我不熟悉你的框架,所以我把它做成了简单的函数,所以你可以根据需要改变它

【讨论】:

    猜你喜欢
    • 2014-02-08
    • 2018-04-13
    • 1970-01-01
    • 2019-08-26
    • 2017-06-09
    • 2016-03-24
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多