我正在构建一个自动化脚本,它将打开浏览器并登录到门户。它必须单击一些按钮和页面。我在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
获得任何返回码或响应代码,以便在脚本中确保其成功运行并且可以继续进行操作
答案 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()