Я следую примеру здесь (на вкладке Python): https://www.selenium.dev/documentation/en/
Код здесь:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.expected_conditions import presence_of_element_located
#This example requires Selenium WebDriver 3.13 or newer
with webdriver.Firefox() as driver:
wait = WebDriverWait(driver, 10)
driver.get("https://google.com/ncr")
driver.find_element_by_name("q").send_keys("cheese" + Keys.RETURN)
first_result = wait.until(presence_of_element_located((By.CSS_SELECTOR, "h3>div")))
print(first_result.get_attribute("textContent"))
Я запустил это код и получил его на работу, отображая первый результат «Показать больше». Тем не менее, в других случаях, когда я запускаю этот код, это не работает и выдает случайную ошибку тайм-аута без сообщения:
Traceback (most recent call last):
File "c:\Users\User\PyCharm_Projects\Project\sample_test.py", line 12, in <module>
first_result = wait.until(presence_of_element_located((By.CSS_SELECTOR, "h3>div")))
File "C:\Program Files\Python38\lib\site-packages\selenium\webdriver\support\wait.py", line 80, in until
raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message:
Мой вопрос: что вызывает ошибку тайм-аута, если она не происходит каждый раз? Я пытался найти элементы с другими методами (XPATH, текст ссылки). Я рассмотрел другие следующие примеры, но ничего из того, что они публикуют, похоже, не решало эту проблему:
Пробовал, не работало - Исключения случайного тайм-аута Selenium без сообщений
Неприменимые решения - Панель поиска в Instagram с селеном - Ошибка определения времени селена - Случайное исключение времени ожидания даже после использования ui.WebDriverWait () chrome селен python
Я нахожусь на Python 3.8, Firefox 68.6.0, и вот соответствующие пакеты от 'pip freeze' - beautifulsoup4 == 4.8.2 - запросы == 2.22.0 - селен == 3.141.0 - urllib3 == 1.25.8 - webencodings == 0.5.1
Спасибо!