Использование Capybara для взаимодействия с ленивыми загрузочными элементами - PullRequest
0 голосов
/ 24 ноября 2018

В настоящее время у меня проблемы с взаимодействием с элементами на странице с использованием отложенной загрузки.Мне нужно выбрать список элементов (который в основном сверху вниз и до 100 элементов).С реализованной отложенной загрузкой я мог выбрать только ее часть, например 1/3, поскольку они разбили все элементы на 3 разные части, тогда он будет загружать только первую часть.Я обнаружил, что использование tricky Javascript может помочь прокрутить его до дна, как page.execute_script("window.scrollTo(0,100000)"), тогда я, вероятно, смогу получить все предметы.

, но следует сохранить его как последний вариант.

Итак, мой вопрос Поддерживает ли Capybara взаимодействие с Lazy Loading вещи , как это.Кроме того, что я должен сделать, чтобы получить все элементы, не используя этот Javascript?

1 Ответ

0 голосов
/ 25 ноября 2018

Если вы просто копируете данные с сайта, то самым простым решением будет просто использовать execute_script для прокрутки страницы.Однако, если вы тестируете приложение, которое ведет себя правильно, вы хотите держаться подальше от execute_script, так как оно может позволить вам делать то, что пользователь никогда не мог сделать, что может сделать ваши тесты недействительными.Вместо этого используйте hover, чтобы навести указатель мыши на элемент на странице, который приведет к загрузке следующей части.Например, если у вас есть список элементов с отображением

<ul id="my_list_of_items">
  <li class="item"></li>
  <li class="item"></li>
  ...
  <li class="item"></li>
</ul>

и следующая группа элементов загружается на страницу при прокрутке нижней части списка, выполните что-то вроде

find('.item:last-child').hover

Это приведет к прокрутке последнего элемента элемента на странице и перемещению указателя перемещения по нему, что приведет к загрузке большего количества элементов.

...