【问题标题】:I want to click on a checkbox using selenium but no method is working for me我想使用 selenium 单击一个复选框,但没有任何方法对我有用
【发布时间】:2017-06-28 00:27:30
【问题描述】:
<input type="hidden" name="vendor_service[customized_car_types[]][is_checked]">
<input type="checkbox" name="vendor_service[customized_car_types[]][is_checked]">== $0
<b>Sedan</b>

我想单击复选框,当我将鼠标悬停在该框上时,html 的第二行被突出显示。我怎样才能点击这个框?

【问题讨论】:

  • 请在您开始执行此操作的位置添加代码。

标签: python selenium webdriver mechanize bs4


【解决方案1】:

使用css选择器,例如:

input[type=checkbox][name*=vendor_service]

【讨论】:

    【解决方案2】:

    尝试使用ActionChains

    from selenium.webdriver.common.action_chains import ActionChains
    from selenium import webdriver
    
    driver = webdriver.Chrome()
    driver.get(URL)
    checkbox = driver.find_element_by_xpath('//input[@name="vendor_service[customized_car_types[]][is_checked]"]')
    actions = ActionChains(driver)
    actions.move_to_element(checkbox)
    actions.click()
    actions.perform()
    

    请注意,目前这种方法不适用于Firefox (geckodriver)

    【讨论】:

    • 我尝试了您的代码,没有收到任何错误,但它也不起作用。有 4 个复选框,当我将鼠标悬停在它们上时,每个复选框都有这两行代码,但使它们独一无二的是指定类型的两行下方的行。在这两行下面有一行 - Sedan 如果这可以帮助您提高代码效率,请尝试告诉我.. 无论如何感谢您的回答
    • 让我们说清楚。最初有&lt;input type="hidden"&gt;,对吧?当您将鼠标指针悬停在它上面时,它变为&lt;input type="checkbox"&gt; 或者两个元素都可用?
    • 实际上没有任何变化,里面有这两行,隐藏的类型没有效果,但是当我将鼠标悬停在第二行时,复选框被突出显示
    • 试试checkbox = driver.find_element_by_xpath('//input[@name="vendor_service[customized_car_types[]][is_checked]" and @type="checkbox"]')
    • 我应该添加 .click() 吗?
    【解决方案3】:

    可能是复选框位于另一个元素的“下方”。尝试直接与页面上的 javascript 交互。您可以尝试以下方法:

    void clickElementWithJs(WebDriver driver, String cssSelector) {
        js = (JavascriptExecutor) driver;
        WebElement element = driver.findElement(By.cssSelector(cssSelector));
        js.executeScript("arguments[0].click();", element);
    }
    

    抱歉,我的解决方案是在 java 中。

    【讨论】:

    • 我用的是python,不好意思没提
    【解决方案4】:

    复选框是否可见?

    我记得遇到了一个问题,即我的脚本无法检查默认情况下在页面上可见但当前不在视图中的复选框。一旦我向下滚动并且它是可见的,该命令就可以正常工作。

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签