【问题标题】:protractor - issues with scrolling into infinite scroller量角器 - 滚动到无限滚动器的问题
【发布时间】:2016-07-14 22:31:27
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: angularjs protractor angularjs-e2e e2e-testing


    【解决方案1】:

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

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

    或者,browser.actions():

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

    【讨论】:

      【解决方案2】:

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

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

      上面的代码会直接向提到的webElement发送一个点击事件,不管它是否可见。

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

      【讨论】:

      • @G1P 请参阅此主题以了解有关此方法优缺点的更多信息:stackoverflow.com/questions/34562061/…
      • @sudharshanalecxe,也试过这个,但在无限滚动中单击我的第 12 个元素没有成功。
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2015-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多