@kupurim

Как дождаться полной загрузки страницы в Selenium php?

Здравствуйте.
Есть парсер написанный на Selenium WebDriver. Ссылка на него тут.
Изначально все работало отлично, после изменений на сайте страница стала долго грузиться и аяксом подгружается основная информация. А сначала только блок с названием и прелоадер.
И получается что мне отдается не весь html код страницы, а только блок с прелоадером.
В документации было написано что можно ждать 10 секунд с интервалом проверки на наличие так:
$driver->wait(10, 1000)->until(
          function () use ($driver) {
              $elements = $driver->findElements(WebDriverBy::cssSelector('#a-match'));
              return count($elements) == 1;
          },
          'Error element'
        );

Но ничего не происходит, скрипт работает ~10 секунд и выдает ошибку "Error element", и получается что он не сумел найти нужный блок.
Как можно решить этот вопрос?
  • Вопрос задан
  • 885 просмотров
Пригласить эксперта
Ответы на вопрос 2
EreminD
@EreminD
Кое-что умею
там, где конфигурите драйвер, проставьте ожидание (читать)

Не силен в php, но вам нужно что-то вроде такого:
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

Так вы зададите время драйверу на ожидание выполнения вашего условия (еслиусловие выполнится раньше - получите раньше)

Дальше вопрос, сколько вы готовы ждать (люди иногда и 60 секунд ставят).
Ответ написан
@grinat
Если там аяксы, то только так: $driver->wait(10, 1000)->until(
WebDriverExpectedCondition::visibilityOfElementLocated(WebDriverBy::id('first_name'))
);
то есть надо ждать пока некий элемент не опявится, либо пока прелоадер после аякса не исчезнет, и потом уже что выполнять.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы