【问题标题】:Python selenium checkbox click does not workPython selenium 复选框单击不起作用
【发布时间】:2017-03-23 15:22:56
【问题描述】:

嘿,我正在使用 python selenium 从表中下载数据。但是当我想准备数据时,我不能选择一个复选框'toggle all'....

我正在进入页面:

browser.get("https://gold.jgi.doe.gov/studies?setColumns=yes&Organism.NCBI+Taxonomy+ID=%3D500633")

点击“为表格选择列”

browser.find_element_by_xpath('//*[@id="showColsButton"]').click()

这里我们是复选框;toggle all'...

browser.find_element_by_xpath('//*[@id="selectFieldsList"]/thead/tr[2]/td/input').click()

真的试过xpath,css选择器......

这里是 html 片段:

<table class="selectFieldsList" id="selectFieldsList">

<thead>
        <tr><td colspan="2" align="center">
        Select Fields using the Checkboxes<br>
        <input type="submit" value="Submit" name="fieldSubmit" id="submitMe" class="submitMe">
    </td></tr>


 <!--  add a select all option -->
       <script language="JavaScript">
       function toggle(source) {
           checkboxes = document.getElementsByName('selectField');
           for(var i=0, n=checkboxes.length;i<n;i++) {
              checkboxes[i].checked = source.checked;
           }
       }

       </script>
       <tr><td> <input type="checkbox" onclick="toggle(this)"> Toggle All<br> </td></tr>
<tr><td>* = required column</td><td>&nbsp;</td> </tr>

<tr><td> <input type="button" id="entityFieldSelectorToggle" value="Expand All Fields"> </td>
</tr></thead>
<tbody>

【问题讨论】:

  • 什么版本的python?什么版本的 Selenium 绑定?
  • python 3.5 和 selenium 3.0.2
  • 嗯,我正在使用 OS X (10.11.6)、Python 3.6、Selenium 3.3.1 和 geckodriver 来实例化 Firefox(51.0.1 64 位)浏览器窗口。当我运行您的代码时,会选中“Toggle All”框。这是代码想要的效果吗?
  • 我会检查软件;p
  • 好的,我解决了 xD,我给了 5 秒睡眠,它工作了 :)

标签: python selenium checkbox


【解决方案1】:

使用显式等待而不是使用睡眠是一个很好的做法,因为即使在找到元素之后它也会有相同的 5 秒时间。希望对你有用

 from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    driver.get("https://gold.jgi.doe.gov/studies?setColumns=yes&Organism.NCBI+Taxonomy+ID=%3D500633")
    driver.find_element_by_xpath('//*[@id="showColsButton"]').click()
    wait = WebDriverWait(driver, 10)
    element = wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="selectFieldsList"]/thead/tr[2]/td/input')))
    driver.find_element_by_xpath('//*[@id="selectFieldsList"]/thead/tr[2]/td/input').click()

【讨论】:

    猜你喜欢
    • 2017-09-24
    • 2021-12-11
    • 2019-10-10
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    • 1970-01-01
    相关资源
    最近更新 更多