【问题标题】:Python Selenium click checkbox without id and namePython Selenium单击没有ID和名称的复选框
【发布时间】:2019-06-04 15:29:49
【问题描述】:

我正在尝试设置可以帮助我更轻松地工作的自动化。我想自动登录设备并设置一些初始设置。我遇到的问题是我必须选中一个复选框才能继续,但我找不到点击按钮的方法。

这是该按钮的 XPath:

//*[@id="tableHdd"]/div/div[1]/span[1]/input

broswer.find_element_by_class_name('table-cell').find_elements_by_class_name('checkbox').click()

【问题讨论】:

  • 错误信息是什么?
  • 请避免快照,而是在原始帖子中以文本格式发布 html。
  • 感谢大家的指正。这是我第一次用这个来问这个问题。我将来会研究我的语法和其他一些东西。

标签: python-3.x selenium xpath css-selectors webdriverwait


【解决方案1】:

要在复选框上的clcick(),您必须为element_to_be_clickable()诱导WebDriverWait,并且您可以使用Locator Strategies中的任何一个:

  • 使用CSS_SELECTOR

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div#tableHdd > div.table > div.table-header > span.table-cell > input.checkbox"))).click()
    
  • 使用XPATH

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@id='tableHdd']/div[@class='table']/div[@class='table-header']/span[@class='table-cell']/input[@class='checkbox']"))).click()
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

【讨论】:

  • 感谢您的帮助。我试过你的解决方案,现在可以了。
【解决方案2】:

你在滥用Element Locators

所以如果页面上只有一个复选框 - 你可以像这样打勾:

driver.find_element_by_class_name("checkbox").click()

如果有更多复选框并且您需要特别勾选那个 - 使用稍作修改的XPath expression

driver.find_element_by_xpath("//div[@id='tableHdd']/descendant::*/span[@class='table-cell']/input").click()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-18
    • 1970-01-01
    • 2015-11-02
    • 2021-04-24
    • 1970-01-01
    • 2017-09-24
    • 2021-12-11
    • 1970-01-01
    相关资源
    最近更新 更多