使用Python/Selenium从网站中选择复选框

使用Python/Selenium从网站中选择复选框,python,angularjs,selenium,xpath,webdriverwait,Python,Angularjs,Selenium,Xpath,Webdriverwait,尝试创建一个简单的脚本,用python/selenium选中/取消选中某些框 我已经扔掉了我手头的那本小书,无法让它正确识别元素。我尝试过(可能错误地)css、xpath、标签和文本 任何帮助都将不胜感激 代码试用: driver.find_elements_by_class_name('list-group-items')[1].click() HTML: 步骤2:选择数据字段 标准字段: 日期

尝试创建一个简单的脚本,用python/selenium选中/取消选中某些框

我已经扔掉了我手头的那本小书,无法让它正确识别元素。我尝试过(可能错误地)css、xpath、标签和文本

任何帮助都将不胜感激

代码试用:

driver.find_elements_by_class_name('list-group-items')[1].click()
HTML:


步骤2:选择数据字段
标准字段:
  • 日期
看来你很接近了。根据您的代码试用,使用
find\u element\u by\u class\u name('list-group-items')[1]
,而不是
find\u element\u by\u class\u name('list-group-item')
会让您走得更近

但是,由于所需元素是元素,因此要单击与文本相关联的复选框,例如,日期时间等,您必须诱导WebDriverWait使元素可单击,并且您可以使用以下任一解决方案:

  • 日期:

  • 时间:

  • 注意:您必须添加以下导入:

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

请在问题中直接包含HTML源代码以及Python代码。这将帮助我们回答你的问题。当然。刚刚更新,你是圣人。这很有魅力,我绝对没有读过任何推荐WebDriverWait作为解决方案的文献。非常感谢。后续:@DebanjanB Date效果很好。时间暂停约10秒,然后出错<代码>第80行,直到raise TimeoutException(消息、屏幕、堆栈跟踪)selenium.common.exceptions.TimeoutException:Message:我尝试将
列表组项目ng绑定ng范围列表组项目成功
更改为
列表组项目ng绑定ng范围
,因为这是我看到的唯一区别,但这给了我相同的错误。我已交叉检查了您提供的HTML。似乎两个
  • 都具有以下类
    列表组项ng绑定ng范围列表组项成功
    。从这个角度来看,我们的解决方案一定奏效了。我敢肯定,一旦您在更改HTML DOM的日期调用
    click()
    。因此XPath也应该有所不同。您是否可以在此时交叉检查HTML(
    Date
    已单击,但
    Time
    未单击)?时间的HTML是相同还是不同?谢谢@Debanjamb。这就是问题所在
    “//li[@class='list-group-item ng binding ng scope list group item success'和
    ”//li[@class='list-group-item ng binding ng scope'并包含`我以为我已经检查过了,再次检查后它工作了。感谢您的帮助。
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//li[@class='list-group-item ng-binding ng-scope list-group-item-success' and contains(@ng-repeat,'exportFormats')][contains(.,'Date')]/input[@class='ng-pristine ng-untouched ng-valid']"))).click()
    
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//li[@class='list-group-item ng-binding ng-scope list-group-item-success' and contains(@ng-repeat,'exportFormats')][contains(.,'Time')]/input[@class='ng-pristine ng-untouched ng-valid']"))).click()
    
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC