Прокрутка элемента div с транспортиром - PullRequest
0 голосов
/ 06 января 2020

Мне нужно прокрутить элемент вниз, чтобы установить флажок. В основном пользовательское соглашение, которое я должен принять. Флажок не активируется до тех пор, пока я не прокручиваю до конца элемента. Вот как выглядит моя функция, которая проверяет флажок:

async privacyStatementEnableCheckbox(){
    await browser.sleep(3000);
    await this.privacyStatementTextContent.click();
    let privacyStatementCheckbox = element(by.xpath(AcceptNewInvitationPage.SELECTORS.privacyStatementCheckbox));
    await browser.actions().mouseMove(this.privacyStatementTextContent).perform();
            await browser.sleep(3000);
            await privacyStatementCheckbox.click();
        }

}

Я использую browser.sleep (), чтобы увидеть, что происходит, и, видимо, div не прокручивается. Я получаю следующую ошибку:

WebDriverError: перехвачен щелчок элемента: элемент не активен в точке xy ... вместо этого будет выбран другой элемент

Я предполагаю, что это потому что есть элемент "hider", который установлен на флажок, пока пользователь не прокрутит до конца элемента div.

Я также пытался:

async privacyStatementEnableCheckbox(){
    await browser.sleep(3000);
    await this.privacyStatementTextContent.click();
    let privacyStatementCheckbox = element(by.xpath(AcceptNewInvitationPage.SELECTORS.privacyStatementCheckbox));
    await browser.executeScript('window.scrollTo(0,10000)').then(async function(){
       //check if the checkbox is checked or not
        if(await this.privacyStatementCheckboxValue.getAttribute("data-bv-result") !== "VALID"){
            await browser.sleep(3000);
            await privacyStatementCheckbox.click();
        }
}

Я знаю, что здесь много тем о прокрутке div, но я не смог найти среди них решение, которое бы мне помогло. Ни один из вариантов не выполнил прокрутку для div для меня, и я не смог найти много информации о том, как работает moseMove (element). Если бы кто-нибудь мог указать, что я делаю неправильно, я был бы благодарен. Дополнительная информация: Я использую chrome, транспортир, огурец.

Ответы [ 2 ]

1 голос
/ 06 января 2020

Я знаю, что это идет вразрез с концепцией тестирования E2E.

Но если вы не собираетесь делать какие-либо утверждения относительно этого соглашения и флажка, и вам просто нужно двигаться вперед, чтобы начать реальные тесты, вы можете:

  1. Проверить флажок до того, как вы 'прочитайте' соглашение
  2. Проверьте его после и выясните, какое свойство изменяется и делает его включенным.
  3. Измените это свойство с помощью browser.executeScript
0 голосов
/ 06 января 2020

Я в конце концов решил это, сказав транспортиру нажать кнопку завершения

await this.privacyStatementTextContent.click();
    await browser.actions().sendKeys(protractor.Key.END).perform();
    await browser.sleep(1000);
    await privacyStatementCheckbox.click();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...