WebdriverIO перебирает URL и прокручивает каждый

#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