@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", и получается что он не сумел найти нужный блок.
Как можно решить этот вопрос?
  • Вопрос задан
  • 80 просмотров
Пригласить эксперта
Ответы на вопрос 2
EreminD
@EreminD
Кое-что умею
там, где конфигурите драйвер, проставьте ожидание (читать)

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

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

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

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

Войти через TM ID
Похожие вопросы
Zoon Москва
от 80 000 руб.
Ticketland.ru Москва
от 120 000 руб.
Интерно Ростов-на-Дону
от 35 000 до 50 000 руб.
21 янв. 2019, в 10:28
1500 руб./за проект
21 янв. 2019, в 10:12
500 руб./в час
21 янв. 2019, в 10:10
10000 руб./за проект