没有ID和名称的Python Selenium点击复选框

时间:2019-06-04 15:29:49

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

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

这是该按钮的XPath:

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

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

2 个答案:

答案 0 :(得分:0)

您滥用Element Locators

因此,如果页面上只有一个复选框-您可以将其选中:

import re, glob, os

os.chdir("C:\\Somepath")

for filename in glob.glob("**/*.mp3", recursive = True):
    filename = re.match(r"(?P<filename>\w+).*\.(?P<ext>.+)", filename)
    filename = "{}.{}".format(filename.group('filename'), filename.group('ext'))
    print(filename)

如果还有更多复选框,并且需要特别打勾,请使用经过稍微修改的XPath expression

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

答案 1 :(得分:0)

要在复选框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