selenium python 中 WebDriverWait 方法 element_to_be_clickable() 的响应

Response from WebDriverWait method element_to_be_clickable() in selenium python

我正在构建一个自动化脚本,它将打开浏览器并登录到门户。它必须单击几个按钮和页面。我在 python 中使用 selenium,因此例如单击我使用的按钮 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()

是否有任何 return 代码或我可以从 WebDriverWait 获得的任何响应代码,以便在脚本中我确定它成功运行并且我可以继续前进

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

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

expected_conditions method element_to_be_clickable() returns WebElement 可见并启用 所以你可以直接在上面调用 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()