Я собираю ограниченное количество предметов с верхней части сайта с бесконечной прокруткой.

links = driver.find_elements_by_xpath("//div[@class='fixed-recipe-card__info']//a")
while len(links)<100:
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    links = driver.find_elements_by_xpath("//div[@class='fixed-recipe-card__info']//a")

Это прекрасно работает, когда окно активно. Однако, если у меня свернут тестовый браузер, новый контент не загружается и цикл работает бесконечно. Я довольно новичок в селене, поэтому я не совсем уверен, почему. Я подозреваю, что есть Javascript onChange, который не запускается. Есть ли команда javascript, которую я должен добавить в свой сценарий, или другая команда selenium, которая приведет к загрузке нового содержимого?

Я использую Python 2.7, селен с Chromedriver. Примером сайта является allrecipes.com.

1
Jake Morris 25 Фев 2018 в 02:56

3 ответа

Лучший ответ

Вы минимизируете это, потому что вы заняты другими вещами? Вы можете использовать режим без головы, когда ваш код делает то, что вы хотите визуально, и избежать этой проблемы.

1
Aphid 25 Фев 2018 в 01:03

Как вы упомянули, тестовый браузер свернулся, новый контент не загружается , что вполне ожидаемо, так как Selenium нуждается в фокусе в окне просмотра . взаимодействовать с элементами DOM.

Причина

На этом этапе стоит отметить, что веб-страница может изменить свое содержание , когда фокус потерян . Вы должны учитывать тот факт, что Selenium был в основном предназначен для тестирования .

Решение

В идеале, Автоматическое выполнение теста или Утилизация веб-страниц должны выполняться в изолированной среде тестирования. предпочтительно в тестовой лаборатории , настроенной с необходимой конфигурацией Аппаратное обеспечение и Программное обеспечение , которая должно быть свободно от ручного вмешательства .

0
DebanjanB 26 Фев 2018 в 06:38

Кстати, вы должны попробовать PhantomJs в качестве драйвера, если сворачивание окна является большой проблемой. По сути, он работает так же, как и драйвер chrome, но не использует браузер, поэтому весь ваш код будет работать в фоновом режиме, это сработало для меня. Это может работать для вас, счастливого кодирования! http://phantomjs.org

0
Bryan A. Trinidad Carrero 25 Фев 2018 в 01:16