我很難習慣WebDriver PageObject模式。請分享您使用PageObjects模式和loadableComponents的經驗和方式。如何在PageObjects模式中使用WebDriver/Selenium 2 LoadComponents?
由於PageObject通常代表的功能的組件或部分,它發生,我起初,我應該用它做一些實際的事情負載(),看看它做什麼,它應該在isLoaded()。
然後我意識到它應該只用於「加載」對象(可能是初始化),就像在網站中移動時一樣,每個對象都有自己的url。並使用isLoaded()來測試對象是否準備好進行測試。
但是,如果你有一個複雜的JavaScript順序提交器來測試,那就是JS文件上傳器,基於2個獨立部分的JS表單,並且有三種訂單,你不會隨意移動(關於URL ),只是元素的狀態正在改變。
考慮get()方法。您使用交互式表單進入頁面。它在頁面上存在表單時加載。然後你有form1和form2對象......他們的load()和isLoaded()方法應該是什麼樣子,他們已經準備好立即採取行動,因爲他們不需要任何加載,只需測試他們的服務。
這是一個爛攤子,一個不知道是否用於檢查對象是否加載,還是加載對象isLoaded()方法,是正確安裝。但我想前一種方法是正確的,在測試中應確保設置的有效性。
場景:
Testing first part of html form - test that field client side validation works
Testing the second one that depends on the first one
Testing the following file uploader - upload, canceling, clearing, order, fileIDs
Testing the overall html form submission - ServerSide validation errors, results
文檔說:
- LoadableComponent
-
公共方法代表日該頁面提供
驗證,上傳,上傳多張,取消E服務,明確
儘量不要暴露是發生在我的唯一的事情是具有頁面
的內部將驅動程序實例隱藏到UnitTests中並使用僅PageComponent來保留PageObjects中的所有字段名稱,css類名稱+爲PageObjects提供輸入數據並聲明服務/功能的布爾結果
種方法返回其他PageObjects
這是習慣的最困難的事情。對於一個交互式表單有4個頁面對象有點不自然。他們建議Form1上,窗體2(Form1的),上傳(窗體2),提交(上傳),但我發現到前面的物體非常混亂的引用鏈接和移交。在測試方法調用get()上所有的人似乎更好。但我想,這背後的想法是不爲驅動程序實例暴露在測試,但只使用正在使用的驅動程序實例PageObjects內部
爲同樣的動作不同的結果建模爲不同的方法 我猜想這意味着它不應該決定關於Page對象側的行動的有效性,但在測試邊
你知道isLoaded會先被調用嗎?這樣可以避免重複加載頁面,如果我們已經在頁面上。 – CodyK 2015-05-26 15:33:38