量角器 - 滚动到无限滚动条的问题
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().mouseMove(myHiddenElementInScroller).click().perform();
在少数情况下,我们正在寻找的元素会被 DOM.when 中的其他元素覆盖,量角器会尝试单击它,覆盖实际元素的元素将接收到单击。所以在这种情况下你需要使用原生的 javascript 点击事件。看下面的代码。
browser.executeScript("arguments[0].click()", myHiddenElementInScroller.getWebElement())
以上代码将直接向提到的 webElement 发送一个点击事件,无论它是否可见。
注意:这不是点击元素的推荐方式。但是在没有其他解决方法来实现点击事件的情况下,您可以这样做。
感谢大家的回复。我能够通过使用 element(by.CssContainingText(cssSelector, searchText)) 定位器解决这个问题。
我有一个量角器测试在我的无限滚动组件中寻找记录,就像这样。
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().mouseMove(myHiddenElementInScroller).click().perform();
在少数情况下,我们正在寻找的元素会被 DOM.when 中的其他元素覆盖,量角器会尝试单击它,覆盖实际元素的元素将接收到单击。所以在这种情况下你需要使用原生的 javascript 点击事件。看下面的代码。
browser.executeScript("arguments[0].click()", myHiddenElementInScroller.getWebElement())
以上代码将直接向提到的 webElement 发送一个点击事件,无论它是否可见。
注意:这不是点击元素的推荐方式。但是在没有其他解决方法来实现点击事件的情况下,您可以这样做。
感谢大家的回复。我能够通过使用 element(by.CssContainingText(cssSelector, searchText)) 定位器解决这个问题。