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

回到顶部