Selenium wait visibility_of_all_elements_located times out - PullRequest
0 голосов
/ 15 февраля 2019

Я тестирую, как получить все результаты на странице результатов поиска, чтобы узнать, как использовать Selenium.При входе на сайт я вижу полный исходный код этой конкретной страницы только в обычном браузере, включая div для строки, которая завершает страницу.

При более длинном наборе результатов, конечно, нормальный браузер выиграл 'Так как Javascript загружался лениво, я решил найти способ для Selenium ждать, пока загрузятся все результаты.

Я основывался ниже на коде ожидания: https://selenium -python.readthedocs.io / waits.html

Следующая ошибка времени ожидания для этой конкретной страницы:

try:
    element = WebDriverWait(driver,100).until(EC.visibility_of_all_elements_located((By.CLASS_NAME, "_3t0c")))

finally:
    print('done with webdriver wait anyway')

Выдается ошибка:

in <module>
    element = WebDriverWait(driver, 100).until(EC.visibility_of_all_elements_located((By.CLASS_NAME, "_3t0c")))
  File "..longFilePath....\lib\site-packages\selenium\webdriver\support\wait.py", line 80, in until
    raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message:

, после которой ничего не отображается Message:

РЕДАКТИРОВАТЬ: ниже ошибка отличается из-за отсутствия скобок, как указано ниже @QHarr спасибо:

in <module>
    element = WebDriverWait(driver,30).until(EC.visibility_of_all_elements_located(By.CLASS_NAME, "_3t0c"))
TypeError: __init__() takes 2 positional arguments but 3 were given

Примечание: если я закомментирую этот цикл попытки, я все еще могу получить всерезультаты на этой странице.

В противном случае я попытался заставить Selenium ждать окончания класса div результатов, а также ошибку тайм-аута при тайм-ауте = 100, загрузка Selenium может быть менее чем за 20 секунд.

Но я только что попробовал с другим class = "_32mo", который, кажется, тоже имеет по одному на имя в списке, и это, видимо, не истекло.

Я новичок в Selenium и действительно новичок в веб-Соскоб, мне просто любопытно, кто-нибудь может объяснить, что может происходить?

1 Ответ

0 голосов
/ 15 февраля 2019

Для показанной ошибки метод ожидает кортеж, поэтому вам нужно больше скобок.Попробуйте

WebDriverWait(driver,30).until(EC.visibility_of_all_elements_located((By.CLASS_NAME, "_3t0c")))
...