#javascript #webdriver-io
#javascript #webdriver-io
Вопрос:
Я использую WebdriverIO (v5.18.7), и я пытаюсь написать что-то, что можно перейти к каждому URL-адресу и прокручивать с шагом вниз, пока вы не дойдете до конца, затем перейдите к следующему URL-адресу. Проблема, с которой я сталкиваюсь, заключается в том, что когда дело доходит до прокрутки части скрипта, он может прокручиваться один раз, прежде чем перейти к следующему URL.
Насколько я понимаю, в документации для WebdriverIO говорится, что команды отправляются асинхронно, что обрабатывается в рамках за кулисами. Итак, я попытался придерживаться фреймворка и попробовал browser.execute / browser.ExecuteAsync, но не смог заставить его работать.
Вот что у меня есть, что кажется близким к тому, что я хочу. Любые рекомендации будут оценены!
const { doesNotMatch } = require('assert');
const assert = require('assert');
const { Driver } = require('selenium-webdriver/chrome');
// variable for list of URLS
const arr = browser.config.urls
describe('Getting URL and scrolling', () => {
it('Get URL and scroll', async () => {
// let i = 0;
for (const value of arr) {
await browser.url(value);
await browser.execute(() => {
const elem = document.querySelector('.info-section');
// scroll until this reaches the end.
// add another for loop with a counter?
elem.scrollIntoView(); //Using this for now as a place holder
});
// i = 1;
}
})
})
Ответ №1:
Короткий ответ $('.info-section').scrollIntoView()
См. https://webdriver.io/docs/api/element/scrollIntoView.html
WebdriverIO поддерживает режимы синхронизации и асинхронности, см. https://webdriver.io/docs/sync-vs-async.html