5

我想测试我的应用是否滚动到线程页面内的特定帖子。

最初我认为isDisplayed可能会有所帮助,并编写了如下代码:

element(by.id(postId)).isDisplayed().then((isDisplayed) => {
  expect(isDisplayed).toBe(true);
});

仔细阅读文档后,isDisplayed不检查元素是否在视口内。

一个 hacky 的方法是计算各种元素的位置,从可滚动的父级开始(window在我的情况下不是)。

是否有检查这一点的最佳做法?

4

1 回答 1

3

第一个想法(你提到的):

el.getWindowMyRect().isInsideMyRect(getWindowMyRect())

此方法不能解决页面内部滚动的问题


第二个想法:

  • elm.getBoundingClientRect()并注意价值
  • 如果需要,滚动到元素: browser.executeScript("arguments[0].scrollIntoViewIfNeeded();", elm.getWebElement());
  • elm.getBoundingClientRect()- 再次与之前的值进行比较,如果值已更改,则需要滚动
于 2018-12-28T11:12:48.173 回答