来自Selenium Python中WebDriverWait方法element_to_be_clickable()的响应

时间:2018-08-29 09:59:17

标签: python selenium selenium-webdriver webdriver webdriverwait

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

答案 0 :(得分:0)

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

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

expected_conditions方法element_to_be_clickable()可见且已启用 时返回 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()