2017-06-20 81 views
0

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

焦點不會丟失......但後來我有覆蓋問題....

什麼想法?

+0

不要使用'block ui'。 – evolutionxbox

+0

在這種情況下,您可以嘗試使用JavaScript執行程序。 – Murthi

+0

我們需要使用block ui來進行E2E測試。 用java腳本執行程序試過..沒有爲我工作,你能舉個例子嗎? – OBender

回答

0

這個問題得到解答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)); 
+0

這就是我做的和它不工作的 browser.waitForExist('。blockUI',browser.options。waitforTimeout,true); – OBender

+0

談論「黑暗中的一槍」......老兄,你事先看過他的問題嗎?首先,讓那個骯髒的Java離開這裏:OP運行WebdriverIO(Selenium JavaScript綁定)。其次,你所關聯的問題比生活更古老,大多數答案與他的情景無關。 – iamdanchiv

0

我會避免使用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(); 
}); 

這是哈克,但它能夠完成任務。