簡體   English   中英

如何在$(document).ready()完成后強制Selenium運行測試?

[英]How can I force Selenium to run tests only after $(document).ready() has completed?

我們的網站在$(document).ready()函數中做了很多JavaScript / jQuery工作,設置按鈕,通過ajax加載內容等等.Selenium等到DOM加載完畢,然后繼續測試.ready( )已經完成。

部分解決方案似乎是使用檢查來查看瀏覽器是否有待處理的ajax請求:

selenium.browserbot.getCurrentWindow().jQuery.active == 0

但是,這並不能確保我們仍然沒有為按鈕和事物設置綁定。

任何幫助將不勝感激。 當前的“最佳”建議是在.ready()方法的末尾向頁面添加一個元素,Selenium可以將其作為開始工作的信號捕獲,但是為了測試目的而添加這樣的代碼的想法似乎是粗略的。

我相信你可以使用窗口加載檢查。 嘗試這個:

$(window).load(function(){  
  selenium.browserbot.getCurrentWindow().jQuery.active == 0 
});  

當前的“最佳”建議是在.ready()方法的末尾向頁面添加一個元素,Selenium可以將其作為開始工作的信號捕獲,但是為了測試目的而添加這樣的代碼的想法似乎是粗略的。

我個人認為修改代碼以提高可測試性是件壞事。 如果你真的不想污染生產頁面,那么使用PHP之類的模板工具只在開發/調試模式下輸出代碼。

此外,您不需要使用DOM。 Selenium可以訪問頁面中的完整javascript上下文,因此您可以使用全局變量作為標志。 也許像SELENIUM_PAGE_FULLY_READY這樣的其他人不太可能使用的東西SELENIUM_PAGE_FULLY_READY Selenium檢查它的存在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM