транспортир - проблемы с прокруткой в ​​бесконечный скроллер

У меня есть тест транспортира, который ищет запись в моем бесконечном компоненте прокрутки, подобную этой.

 searchPage.searchEntitlement('search criteria');
    var myHiddenElementInScroller = element(by.repeater('result in ctrl.results track by $index').row(12));
    browser.driver.executeScript(function () { arguments[0].scrollIntoView(); }, myHiddenElementInScroller .getWebElement());

myHiddenElementInScroller.click();

Предполагается, что это прокрутит до элемента и щелкнет по нему. Вместо этого он выдает мне не видимую ошибку элемента.

Кто-нибудь сталкивался с этой ситуацией? Любая помощь очень ценится.


person G1P    schedule 09.07.2016    source источник


Ответы (3)


Возможно, вам придется явно подождать, пока действительно произойдет прокрутка в поле зрения:

browser.driver.executeScript("arguments[0].scrollIntoView()", myHiddenElementInScroller.getWebElement()).then(function () {
    myHiddenElementInScroller.click();
});

Или с помощью browser.actions():

browser.actions().mouseMove(myHiddenElementInScroller).click().perform();
person alecxe    schedule 09.07.2016

В некоторых сценариях элемент, который мы ищем, будет покрыт каким-либо другим элементом из DOM. Когда транспортир попытается щелкнуть по нему, щелчок будет получен элементом, который покрывает фактический элемент. Поэтому в такой ситуации вам нужно использовать собственное событие щелчка javascript. Посмотрите на приведенный ниже код.

browser.executeScript("arguments[0].click()", myHiddenElementInScroller.getWebElement())

Приведенный выше код отправит событие клика непосредственно на указанный веб-элемент, даже если он виден или нет.

ПРИМЕЧАНИЕ. Это не рекомендуемый способ нажатия на элемент. но вы можете это сделать в сценариях, где у вас нет другого обходного пути для достижения события щелчка.

person Sudharsan Selvaraj    schedule 11.07.2016
comment
@G1P, также см. эту ветку для получения дополнительной информации о плюсах и минусах этого подхода: stackoverflow.com/questions/34562061/. - person alecxe; 11.07.2016
comment
@sudharshanalecxe, я тоже пробовал это, но не смог щелкнуть мой 12-й элемент в бесконечном скроллере. - person G1P; 11.07.2016

Спасибо за все ответы. Мне удалось решить эту проблему с помощью локатора element(by.CssContainingText(cssSelector, searchText)) .

person G1P    schedule 14.07.2016