Как предотвратить ошибки при нажатии на элемент на странице, но не прокручивается в представление в nightwatch.js?

Я пишу тест для элемента на странице, но не прокручивается в поле зрения. Всякий раз, когда я использую pageObject.click("@MyElement) на элементе он выдает эту ошибку:

Error while running .clickElement() protocol action: element click intercepted: Element is not clickable at point (621, 929)

Затем элемент будет отображаться после появления ошибки. Не уверен, что здесь происходит.

Я пытался использовать pageObject.moveToElement("@selector").waitForElementVisible("@selector"), Но это не работает.

1 ответ

Когда это происходит со мной, я обычно сначала прокручиваю целевой элемент в представление, а затем продолжаю выполнять свои действия и / или утверждения на нем.

Мы будем использовать метод execute:

browser.element('css selector', <targetElemSelector>, (result) => {
  browser.execute('arguments[0].scrollIntoView({behavior: "instant", block: "center", inline: "center"})', [result.value]);
  browser.click(result.value.ELEMENT);
});

Этот подход также дает вам большую гибкость при позиционировании целевого элемента с помощью атрибутов scrollIntoView: вы можете заблокировать элемент сверху, снизу или по центру, как в примере. Это особенно полезно в тех случаях, когда необходимо избегать дублирования всплывающих окон с рекламой, чат- ботов, уведомлений GDPR и т. Д.

Другие вопросы по тегам