量角器 - 滚动到无限卷轴的问题

时间:2016-07-09 18:02:22

标签: angularjs protractor angularjs-e2e e2e-testing

我有一个量角器测试,在我的无限卷轴组件中查找记录。

 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();

这应该滚动到元素并单击它。相反,它让我元素不可见错误。

有没有人遇到过这种情况?非常感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

您可能需要明确等待滚动到视图实际发生:

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

或者browser.actions()

browser.actions().mouseMove(myHiddenElementInScroller).click().perform();

答案 1 :(得分:1)

在少数情况下,我们正在寻找的元素将被DOM中的其他元素覆盖。当量角器尝试单击它时,单击将由覆盖实际元素的元素接收。所以在这种情况下你需要使用原生的javascript点击事件。请看下面的代码。

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

上面的代码会将Click事件直接发送到提到的webElement,即使它是否可见。

注意:这不是单击元素的推荐方法。但是在没有其他解决方法来实现点击事件的情况下,你可以这样做。

答案 2 :(得分:0)

感谢所有回复。我能够通过使用element(by.CssContainingText(cssSelector,searchText))定位器来解决这个问题。