2017-04-26 71 views
-3

在我的應用程序中,我處理的是一個窗口,當我們點擊一​​個特定的web元素時,用java的selenium WebDriver來關閉它。 在這裏,我可以點擊窗口,窗口正在關閉,但下一行代碼沒有執行,沒有錯誤或異常,它只是無限期地等待。任何人都可以找到我同樣的解決方案?處理子窗口點擊特定的webelement時關閉

+0

爲什麼不在這之後切換到原始窗口? –

+1

你準確的步驟是什麼?什麼對你有用?顯示代碼。你卡在哪裏? – DebanjanB

+0

@Gaurang但在這種情況下,我甚至無法在子窗口中單擊該元素後鍵入打印語句,該窗口在該點擊時關閉。 – Hana

回答

-1

,使得收盤低於代碼窗口寫入後: 首先嚐試這種

driver.switchTo().defaultContent(); 

如果上面的代碼不工作,然後嘗試下面的代碼。

driver.switchTo().activeElement() 
+0

Hi @Hana:很抱歉聽到它。似乎由於某些未知原因點擊後,驅動程序仍在等待Click()的響應。所以我會建議不要使用元素的Click()方法。使用javascript來點擊它。嘗試以下代碼: WebElement closeBtn = webDriver.findElement(btn_locator); JavascriptExecutor executor =(JavascriptExecutor)webDriver; executor.executeScript(「arguments [0] .click();」,closeBtn); 如果您已經切換到新窗口,請切換回主窗口。 – Shailendra

0

似乎點擊了butoon和關閉窗口後,由於某些未知原因,驅動程序仍在等待Click()的響應。所以我會建議不要使用元素的Click()方法。使用javascript來點擊它。

試試下面的代碼:

driver.manage().timeouts().setScriptTimeout(20, TimeUnit.SECONDS); 

WebElement closeBtn= webDriver.findElement(btn_locator); 

JavascriptExecutor executor = (JavascriptExecutor) webDriver;

executor.executeScript("arguments[0].click();", closeBtn); 

如果 「executor.executeScript」 不工作,然後嘗試 「executor.executeAsyncScript」:

executor.executeAsyncScript("arguments[0].click();", closeBtn); 

如果你有已將任何切換到新窗口,然後切換回主窗口

+0

謝謝shailendra,但它不適合我,這裏也是點擊()後等待。 – Hana

+0

再做一次嘗試。關閉窗口後,獲取窗口句柄,切換到窗口,然後嘗試與其交互。 – Shailendra

+0

您面臨的問題可能有2-3個原因:1)執行Click()操作後,驅動程序仍在等待控制權。在這種情況下,JavaScript代碼應該可以幫到你。 2)單擊()後,您沒有正確切換窗口。 3)執行click()操作後,應用程序正在掛起。 – Shailendra