我正在爲某些Web應用程序創建自動化測試。這個應用程序非常複雜。實際上它是特定內容的文本編輯器。作爲功能的一部分,它有一些彈出式框架。你可以打開這個彈出窗口?進行一些更改並保存 - 關閉當前幀。可能問題在於,位於框架內的關閉按鈕將被消除。這迫使Chrome WebDriver掛起。我的第一次嘗試是這樣的:Chrome WebDriver在當前選定框架關閉時運行
driver.findElement(By.xpath("//input[@id='insert']")).click();
driver.switchTo().defaultContent();
但hungs上executinh點擊命令,該命令關閉幀後第一線。 後來我改成這樣(我有JQuery的頁面上):
driver.executeScript("$(\"input#insert\").click()");
driver.switchTo().defaultContent();
但是這會導致同樣的結果。 然後我用這個解決方案:
driver.executeScript("setTimeout(function(){$(\"input#insert\").click()}, 10)");
driver.switchTo().defaultContent();
它hungs在第二行。只有這個解決方案有效:
driver.executeScript("setTimeout(function(){$(\"input#insert\").click()}, 100)");
driver.switchTo().defaultContent();
但是隻有當你不考慮時,它是不穩定的 - 可能會出現一些時間問題。
因此,可能問題是否有更清潔和更穩定的方法從閉合框架切換出來?
P.S .: executeScript - 自定義函數來減少代碼量。它只是在頁面上執行一些js。
更新:
我意識到我錯了。這個問題不適用於所有的iframe。當使用tinyMCE彈出窗口時會出現這種情況。情況與this topic完全相同。所以我很懷疑我會在這裏找到答案,但誰知道。上述解決方案將有所幫助,但只有很短的時間,這意味着幾秒鐘後,chromedriver會掛在下一個命令上。
對不起,該問題的描述並不完整。 – Dmitry 2012-08-08 08:42:19