Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

Protractor. Использование Scroll и Keyboard actions

protractor
automation
testng
javascript
Теги: #<Tag:0x00007fedbc157d48> #<Tag:0x00007fedbc157b68> #<Tag:0x00007fedbc157a28> #<Tag:0x00007fedbc1578e8>

(Olexander Davis) #1

Привет.
Подскажите как вы используете Scroll или Keyboard actions что бы избежать:

Failed: unknown error: Element is not clickable at point (326, 549)

Спасибо.


(Pavel Ozerov) #2

Здравствуйте. Хорошо бы код посмотреть. Судя по всему, нужный вам элемент не найден там, где вы его ожидаете. Или найден, но не вовремя. Отсюда и невозможность на него кликнуть. Я бы копал в сторону ожиданий/таймаутов.


(Olexander Davis) #3

Спасибо за ответ, честно, я не думаю что проблема в ожиданиях, здесь простое заполнение формы, и все заполняется если я в ручную скролю страницу вниз, если нет то тест сразу падает на елементе, который за окном браузера

beforeEach( async function() {
        await new HomePage().open();
        await signUpButton.click();
        await closePopUp.click();
        await browser.sleep(3000);
        await browser.wait(EC.invisibilityOf($('.pop-up')), 3000 );
    });

    it('first Sign Up', async function () {
    email.sendKeys('test@gmail.com');
    passField.sendKeys('Alex2030');
    passConfField.sendKeys('Alex2030');
    await browser.sleep(1000);
    prefix.click();
    await browser.sleep(1000);
    mr.click();
    firstName.sendKeys('Protractor');
    lastName.sendKeys('AutoTest');
    company.sendKeys(' QA');
    fullAddress.sendKeys('Chicago');
    await expect($('.suggestion')).toAppear(2000, 'suggestive search is not present');
    await suggestiveSearch.click();
    await address1.sendKeys('Chicago Address 1 90000');
    await address2.sendKeys('This is second test address, Chicago');
    zip.sendKeys('12345');
    phone.sendKeys('1234567890');
    await browser.wait(isClickable, 2000);
    await buttonSignUp.click();


    });

(Oleksandr Khotemskyi) #4

Привет, можешь попробовать поскролить просто через .executeScript()

Так же много await не указано - обязательно нужно ставить await перед всеми асинхронными действиями.


beforeEach(async function () {
    await new HomePage().open();
    await signUpButton.click();
    await closePopUp.click();
    await browser.sleep(3000);
    await browser.wait(EC.invisibilityOf($('.pop-up')), 3000);
});

async function scrollTo(elementToScroll) {
    await browser.executeScript("arguments[0].scrollIntoView();", elementToScroll)
}

it('first Sign Up', async function () {
    await email.sendKeys('test@gmail.com');
    await passField.sendKeys('Alex2030');
    await passConfField.sendKeys('Alex2030');
    await browser.sleep(1000);
    await prefix.click();
    await browser.sleep(1000);
    await mr.click();
    await firstName.sendKeys('Protractor');
    await lastName.sendKeys('AutoTest');
    await company.sendKeys(' QA');
    await fullAddress.sendKeys('Chicago');
    await expect($('.suggestion')).toAppear(2000, 'suggestive search is not present');
    await suggestiveSearch.click();
    await address1.sendKeys('Chicago Address 1 90000');
    await address2.sendKeys('This is second test address, Chicago');
    await zip.sendKeys('12345');
    await phone.sendKeys('1234567890');
    await browser.wait(isClickable, 2000);
    await scrollTo(buttonSignUp) // До этого элемента нужно поскролить?
    await buttonSignUp.click();
});

(Olexander Davis) #5

Спасибо, прийду домой, добавлю


(Наталья Рощина) #6

через executeScript() должно кликнуть. Если нет, то мжно попробовать(Python)
element_to_hover_over = self.driver.find_element(By...") hover = ActionChains(self.driver).move_to_element(element_to_hover_over) hover.perform()


(Olexander Davis) #7

Наташ, ну для Python у меня вопроса нету, ActionChains тоже там использую, хотя он и не очень стабильный в плане скрола. Но здесь javascript :slightly_smiling_face:


(Oleksandr Khotemskyi) #8

так в webdriverjs(и как следствие в protractorjs) тоже есть action chains:

rowser.actions().mouseMove(someElement).perform();

http://www.protractortest.org/#/api?view=webdriver.WebDriver.prototype.actions