Ваш код пробной версии довольно хорош, что выглядит следующим образом:
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()