Особенно на внешних веб-сайтах загрузка страницы занимает некоторое время. Это означает, что следующий шаг (или его часть) может быть проигнорирован, поскольку страница не готова для получения дальнейших операций от клиента Selenium.
time.sleep (n), где n - это количество секунд ожидания, это быстрый способ ожидания загрузки страницы, но если это займет немного больше времени, чем указано вами, произойдет сбой, и если он загружается намного быстрее, тогда он будет тратить время. Поэтому я использую функцию для ожидания такой страницы.
@contextmanager
from selenium import webdriver
from selenium.webdriver.support.expected_conditions import staleness_of
from contextlib import contextmanager
def wait_for_page_load(timeout=MAX_WAIT):
""" Wait for a new page that isn't the old page
"""
old_page = driver.find_element_by_tag_name('html')
yield
webdriver.support.ui.WebDriverWait(driver, timeout).until(staleness_of(old_page))
Чтобы вызвать функцию, используйте что-то вроде
with self.wait_for_page_load():
AbreImagem.click()
где вторая строка - это все, что вызывает загрузку новой страницы. Обратите внимание, что эта процедура зависит от наличия тега на старой странице, который обычно довольно надежен.