Test Env Protractor: элемент не активен в точке (x, x), другой элемент получит щелчок - PullRequest
0 голосов
/ 28 февраля 2020

Привет всем. У меня возникли проблемы с взаимодействием с таблицей в моих сценариях e2e. element(by.css('#topic_0')).click(); Когда я нахожусь в своей среде разработки, я могу нормально с ней взаимодействовать, но когда я взаимодействую с ней, когда я переключаюсь в тестовую среду, я получаю эту ошибку. Failed: element click intercepted element id="topic_0" is not clickable at point (x,x). other element would receive the click id="topics_table" Вот так я вхожу в свою тестовую среду

 browser.waitForAngularEnabled(false);
    browser.get(browser.baseUrl);
    browser.sleep(10000);
    browser.findElement(by.id('userID')).sendKeys(browser.params.login.user);
    browser.findElement(by.id('password')).sendKeys(browser.params.login.password);
    browser.findElement(by.name('submitButton')).click();
    browser.waitForAngularEnabled(true);

1 Ответ

0 голосов
/ 03 марта 2020

Ошибка Failed: element click intercepted element id="topic_0" is not clickable at point (x,x). other element would receive the click id="topics_table" обычно возникает, когда транспортиру не удается найти целевой элемент (в вашем случае вы нацеливаетесь на элемент, который имеет #topic_0 css; из кода выше element(by.css('#topic_0'))) ...

Транспортир обычно не может найти элемент, когда вы не имеете дело с обещаниями. Я предполагаю, что элемент, на который вы пытаетесь щелкнуть, еще не доступен в DOM, и транспортир вместо этого щелкает по другому элементу ... проблема не имеет ничего общего со средами. Возможно, в вашем случае тестовая среда работает медленнее, чем среда разработки, поэтому она работает на dev, а не на тестовой среде.

Я бы сказал, используйте одно из Ожидаемых условий * 1009. * то есть visibilityOf Ожидаемые условия, так что ваш код в конечном итоге ожидает отображения элемента в DOM ... так что ваш код будет выглядеть следующим образом:

var EC = protractor.ExpectedConditions;
// Waits for the element with id 'topic_0' to be visible on the dom.
browser.wait(EC.visibilityOf($('#topic_0')), 5000);
element(by.css('#topic_0')).click();

в обратите внимание, что при использовании CSS селекторов в качестве локатора вы можете использовать ярлык $ () :

$('my-css');
// Is the same as:
element(by.css('my-css'));
...