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

protractor - issues with scrolling into infinite scroller

我有一个量角器测试在我的无限滚动组件中寻找记录,就像这样。

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

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

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

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

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

或者,browser.actions()

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

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

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

以上代码将直接向提到的 webElement 发送一个点击事件,无论它是否可见。

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

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