#protractor
#транспортир
Вопрос:
Я тестирую бесконечную прокрутку в своем приложении angular. Прокрутка является частью таблицы на главной странице. На главной странице нет собственной полосы прокрутки, и если я наведу курсор мыши на таблицу и прокручу, будет загружено больше элементов.
Изначально на экране отображается 50 строк, из которых в таблице видны только 10. При прокрутке до последнего элемента в пользовательский интерфейс будут загружены следующие 50. Это будет продолжаться до тех пор, пока не будут извлечены все элементы.
Я попробовал щелкнуть по первой строке таблицы и использовал прокрутку
dashboard.Row1.click() browser.executeScript(«window.scrollBy(0,200)»);
При этом таблица не прокручивается. Я не уверен, что это правильный подход к решению проблемы. Я также пробовал использовать смещение, но это тоже не помогло
Это мой HTML:
<tbody infinite-scroll="$ctrl.loadInventories()" infinite-scroll-container="'.table-wrapper'" md-body="" class="md-body ng-isolate-scope">
<!-- ngRepeat: data in $ctrl.inventories | orderBy: myOrder -->
<tr class="" ng-repeat="data in $ctrl.inventories | orderBy: myOrder" style="">
<!-- ngRepeat: data in $ctrl.inventories | orderBy: myOrder -->
<tr class="" ng-repeat="data in $ctrl.inventories | orderBy: myOrder" style="">
<!-- ngRepeat: data in $ctrl.inventories | orderBy: myOrder -->
<tr class="" ng-repeat="data in $ctrl.inventories | orderBy: myOrder" style="">
<!-- ngRepeat: data in $ctrl.inventories | orderBy: myOrder -->
<tr class="" ng-repeat="data in $ctrl.inventories | orderBy: myOrder" style="">
Ответ №1:
Вы могли бы попробовать прокрутить до последней строки таблицы с помощью scrollIntoView()
. Это было бы что-то вроде
const tableRows = element.all(by.css('tbody tr'));
browser.executeScript(e => e.scrollIntoView(), tableRows.last());
Или более компактно, возможно, менее читабельно
browser.executeScript(e => e.scrollIntoView(), $$('tbody tr').last());
Комментарии:
1. Я попробовал scrollIntoView. В моем приложении есть время загрузки для загрузки следующих 50 строк. scrollIntoView загружает только следующие 50 строк и останавливает выполнение. Я пробовал использовать цикл while и waitforangular. но все же на самом деле он не извлекает все строки, которые могут занимать 8 или 9 полных scrollintoview
2. Я понимаю, да, когда я тестировал бесконечную прокрутку, в итоге я повторял действие «прокрутка вниз» столько раз, сколько необходимо для загрузки всего, с задержкой внутри каждого цикла для подготовки к следующей прокрутке. Вот как это сделал бы пользователь, я не знаю ярлыка для теста (если только в вашем приложении нет настройки «результаты на странице», которую вы могли бы настроить).
3. @Bin Привет, Бин, если тебе помог этот ответ, не мог бы ты принять его, поставив галочку слева. Таким образом, другие пользователи могут быстро увидеть, сработало ли это, если они будут искать ту же проблему