【问题标题】:How to check checkbox using Selenium in Python如何在 Python 中使用 Selenium 检查复选框
【发布时间】:2026-02-13 00:55:01
【问题描述】:

我对这个复选框有疑问。我试图单击带有 id、名称、XPath、CSS 选择器并包含文本的搜索元素,但我仍然无法单击此复选框。此外,我尝试过使用类似 HTML 代码的另一个站点,在这个站点上,查找 id 并单击就足够了。有什么想法吗?

<div class="agree-box-term">
    <input tabindex="75" id="agree" name="agree" type="checkbox" value="1">
    <label for="agree" class="checkbox-special">* Zapoznałam/em się z <a href="https://worldbox.pl/content/regulamin,27.html" target="_blank">Regulaminem sklepu internetowego</a> i akceptuję jego postanowienia.<br></label>
</div>

这是我的 Python 代码https://codeshare.io/5zo0Jj

【问题讨论】:

  • 检查它是否在任何框架内。如果可以共享整个 html?
  • 是的,有可能,在哪里分享你这个代码?
  • 你能在这里分享吗
  • 约1115行

标签: python selenium checkbox


【解决方案1】:

我使用了 javaScript Executor,它点击了元素。但是我也检查了 webdriver click 不起作用。

driver.execute_script("arguments[0].click();", driver.find_element_by_id("agree"))

【讨论】:

  • 你能解释一下为什么它只适用于 javaScript Executor 吗?
  • 当WebDriver点击不起作用时,你应该使用JavaScript执行器与元素交互。但这不是一个好的做法,但没有其他选择。
  • 但是为什么会这样呢?
【解决方案2】:

我不知道这是为什么,但根据我的经验,有些框不接受点击,但接受“鼠标按下”触发器。

试试:

driver.execute_script('$("div.agree-box-term input#agree").trigger("mousedown")')

这个解决方案确实依赖于页面上的jquery,如果不是我们可以用javascript编写它

【讨论】:

    【解决方案3】:
    r = driver.find_element_by_xpath("//*[@id="form-order"]/div[2]/div[4]/label")
    r.click()
    

    这对你有用吗?有时只是选择正确的xpath,或者点击后添加括号的问题。

    【讨论】:

    • selenium.common.exceptions.NoSuchElementException: 消息:没有这样的元素:无法找到元素:{"method":"xpath","selector":"//*[@id='form -order']/div[2]/div[4]/label"}
    【解决方案4】:

    您的代码是否包含嵌套的 html 标签?例如:

    <html>
    
        <div>
    
            <p> Some text </p>
    
            <html>
                That block can't be traversed!
            </html>
    
        </div>
    
    </html>
    

    第二个 HTML 标签中的任何内容都不能被遍历/访问。 试试看是不是这样。


    在任何其他情况下,以下代码对于您的 sn-p 运行得非常好:

    driver.find_element_by_css_selector('#agree').click()
    

    【讨论】:

      最近更新 更多