我正在为页面上的元素编写测试,但没有滚动到视图中。每当我在元素上使用pageObject.click("@MyElement)
时,它都会引发此错误:
Error while running .clickElement() protocol action: element click intercepted: Element is not clickable at point (621, 929)
然后,该元素将在引发错误后滚动到视图中。不知道这里发生了什么。
我试过使用pageObject.moveToElement("@selector").waitForElementVisible("@selector")
,但它不起作用。
当这种情况发生在我身上时,我通常会先将目标元素滚动到视图中,然后继续对其执行操作和/或断言。
我们将使用执行方法:
browser.element('css selector', <targetElemSelector>, (result) => {
browser.execute('arguments[0].scrollIntoView({behavior: "instant", block: "center", inline: "center"})', [result.value]);
browser.click(result.value.ELEMENT);
});
这种方法还为您提供了很大的灵活性,可以通过scrollIntoView的属性定位目标元素:您可以像示例中一样将元素锁定在顶部,底部或中心。当您必须避免营销弹出窗口、聊天机器人、GDPR 通知等重叠时,这尤其有用。