Если оператор проверки элемента не будет перехвачен (Python Selenium) - PullRequest
1 голос
/ 11 января 2020

Мой код ожидает, чтобы элемент стал кликабельным, но даже когда это происходит, над ним все еще есть всплывающее окно, которое остается в течение нескольких секунд, пока таблица заполнена. Это означает, что мой клик перехватывается.

Есть ли способ выполнить оператор if, чтобы сказать: «если будет перехвачен клик, time.sleep(1), а затем повторить попытку? Я действительно не хочу использовать простой time.sleep(3) сам по себе, поскольку время загрузки будет варьироваться, и я хотел бы быть эффективным.

Текущий код - это только начальный шаг:

element = WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.ID, "location-expandable-click")))
element.click()

1 Ответ

0 голосов
/ 11 января 2020

Лучше всего дождаться исчезновения всплывающего окна. Для этого можно использовать ожидание с invisibility_of_element_located.

Второй вариант - использовать JavaScript для нажатия:

driver.execute_script("arguments[0].click();", WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.ID, "location-expandable-click"))))

В-третьих, использовать Попробуйте, кроме :

element = WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.ID, "location-expandable-click")))
clicked = False
for _ in range(5):
    try:
        element.click()
        clicked = True
        break
    except ElementClickInterceptedException as e:
        print("Failed to click, will try again after 1 second")
        time.sleep(1)

if not clicked:
    print("Failed to click after 5 tries")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...