[Транспортир] [Прокрутка] Я пытаюсь прокрутить свою веб-страницу, используя цикл while.Может кто-нибудь помочь мне понять, что не так с кодом - PullRequest
0 голосов
/ 19 февраля 2019

Эта функция вызывается для прокрутки, а затем после ее разрешения браузер переводится в спящий режим на 2 с.

   scrollToElement(webElement: any) {
        browser.executeScript('window.scrollTo(0,400);').then(()=>{
            console.log("sleeping"+ browser.sleep(2000));
        }).catch((err)=>{
            assert.fail("failed to scroll");
        }); 
    }

Фрагмент вызова функции:

while(!(arr[0]===arr[2])){
            console.log('scroll');
            utils.scrollToElement(this.scrollUpLink);
            countTop = utils.getTextfrom(this.getTotalcountOnTop);
             let arrIn=countTop.split(" ");
             arr[0]=arrIn[0];
             arr[2]=arrIn[2];
             console.log(" Indisde :"+arr[0]+ " "+ arr[2]);
        }

Здесь я проверяю равенстводве строки и прокрутка, пока оба не совпадают.

The output that I get is:
scroll
 Indisde :24 434
scroll
 Indisde :24 434
scroll
 Indisde :24 434
scroll
 Indisde :24 434

1 Ответ

0 голосов
/ 19 февраля 2019

В вашем коде есть некоторые проблемы с реализацией, я имею в виду, что вы неправильно обрабатываете Promise s и не увеличиваете значение 400 в window.scrollTo(0,400);.

И вы используете sleep() в then (), поэтому ниже приведен код, который я пробовал на основе вашего кода, и он полностью работает нормально, поэтому измените свой код соответствующим образом и попробуйте выполнить:

// Declaring driver
var driver = null;

// Funtion to perform scroll
async function scrollToElement(xValue, yValue) {
    await driver.executeScript('window.scrollTo('+xValue+', '+yValue+');')
}

// Function which passes counter to a scrolling function and waits 2 seconds before doing the scroll 
async function doScroll() {
    // Initializing the driver
    driver = await browser.setup('chrome');
    // Launching the chrome and navigating to google.com
    await driver.get('http://www.google.com');
    // Searching something in the google
    await driver.findElement(By.name('q')).sendKeys('alicse3'+Key.ENTER);
    // Calling the scrolling funciton
    let i = 0, xValue = 0, yValue = 100;
    while(i++ <= 5) {
        await scrollToElement(xValue, yValue+=100);
        await console.log("=> The 'i' value is " + i);
        await driver.sleep(2000);
    }
}

// Executor function
doScroll();

Надеюсь, это поможет ...

...