webdriver的IO加载覆盖防止点击
在webdriver.io我试图把重点元素,然后单击另一个元素,webdriver的IO加载覆盖防止点击
的代码如下所示:
browser.moveToObject(focusSelector) .click(clickSelector);
的问题在于聚焦带来的负荷叠加上页面,当我尝试点击有时覆盖被接收的点击,和代码失败与此异常:
unknown error: Element <div data-bo="UserMenu">...</div> is not clickable at point (1203, 28). Other element would receive the click: <div class="blockUI blockOverlay"></div>
,所以我需要等待当O verlay .blockUI就会消失,然后才做点击....
我曾试图做的事:
browser.moveToObject(focusSelector); browser.waitForExist('.blockUI', browser.options.waitforTimeout, true);
browser.click(clickSelector);
但这不会moveToObject后工作原因,焦点将丢失,点击选择不显示。
而在:
browser.moveToObject(focusSelector) .click(clickSelector);
焦点不会丢失......但后来我有覆盖问题....
什么想法?
回答:
这个问题得到解答in this SO post。
这适用于我的Ajax加载器:"Loading image ID"
(加载图片的ID)可以通过Firebug检索。
By loadingImage = By.id("loading image ID"); WebDriverWait wait = new WebDriverWait(driver, timeOutInSeconds);
wait.until(ExpectedConditions.invisibilityOfElementLocated(loadingImage));
回答:
我会避免使用moveToObject()
,因为它很快就会被弃用。如果您绝对不能这样做,请尝试使用:
browser.waitForVisible('.blockUI', null, true);
之后的moveToObject()
命令。等待元素不再可见(null
表示它将等待您在配置文件中设置的默认毫秒数,而true
表示该命令反转 - 请在此处阅读更多信息:http://webdriver.io/api/utility/waitForVisible.html#Usage)。
的execute
选项,上面所提到的应该是这样的:
browser.execute(() => { document.querySelector('[data-bo="UserMenu"]').click();
});
这是哈克,但它能够完成任务。
以上是 webdriver的IO加载覆盖防止点击 的全部内容, 来源链接: utcz.com/qa/264868.html