代码之家  ›  专栏  ›  技术社区  ›  S Andrew

selenium python中WebDriverWait方法元素\u到\u be \u clickable()的响应

  •  0
  • S Andrew  · 技术社区  · 6 年前

    WebDriverWait :

    BTN= (By.XPATH, '''//a[@ui-sref="app.colleges.dashboard({fid: app.AppState.College.id || Colleges[0].id, layout: app.AppState.College.layout || 'grid' })"]//div[@class='item-inner']''')
    
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable(BTN)).click()
    

    有没有返回码或者回复码 WebDriverWait网站 因此,在脚本中,我确信它运行成功,我可以继续前进

    1 回复  |  直到 6 年前
        1
  •  0
  •   undetected Selenium    6 年前

    你的 代码试用 非常完美,如下所示:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable(BTN)).click()
    

    这个 expected_conditions element_to_be_clickable() 返回 当它是 所以你可以直接调用 click() 方法。

    现在根据你的意见更新,如果你想实现 3-4次重试

    from selenium import webdriver  
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.common.exceptions import TimeoutException
    
    BTN= (By.XPATH, '''//a[@ui-sref="app.colleges.dashboard({fid: app.AppState.College.id || Colleges[0].id, layout: app.AppState.College.layout || 'grid' })"]//div[@class='item-inner']''')
    for i in range(3):
        try:
            WebDriverWait(driver, 5).until(EC.element_to_be_clickable(BTN)).click()
            print("Element was clicked")
            break
        except TimeoutException:
            print("Timeout waiting for element")
    
    driver.quit()