2013-10-25 46 views
1

我試圖使用Spock(Grails應用程序)自動化一些功能測試,但我無法弄清楚如何自動執行以下操作: 我需要能夠登錄一個網絡應用並點擊一個鏈接(從Web應用程序),然後打開一個新的瀏覽器窗口,並在對第二應用記錄(因爲它們共享用戶憑證 - 他們使用SSO)。我需要測試的所有功能都在第二個Web應用程序上,並且沒有直接登錄到該應用程序。如何編寫共享瀏覽器會話的Spock測試

我想知道如果有web應用程序之間使用當前的瀏覽器會話(和共享的cookie)的方式。

我將不勝感激任何想法。

答發現

我設法找到你我的查詢。如在下文中我的意見中提到,我用withNewWindow()方法如下:

withNewWindow({AnchorForNewPage.click()}){在(NewPage公司) 斷言 做一些 和別的 } 確保您在第二頁上執行的操作都在此閉包內,否則測試將失敗。

+0

使用[GEB](http://grails.org/plugin/geb),用於功能測試。 – dmahapatro

+0

我之前已經提到了Geb的所有測試,但無法找到此查詢的答案。我正在嘗試使用下面的webdriver的方法,讓我們看看它是如何發生的:pageWillChange(瀏覽器瀏覽器,Page oldPage,Page newPage)---接口PageChangeListener –

+0

任何人都可以對此有所瞭解。仍然沒有運氣與Geb .. –

回答

3

我引述Book of Geb

的geb.spock.GebSpec類將清除清理()的餅乾 方法,除非該規範是@Stepwise,在這種情況下,他們在清除 cleanupSpec()(意即在逐步規範 所有功能方法共享相同的瀏覽器狀態)。

不確定它會在兩個Web應用程序之間進行SSO和會話共享,但您可以試一試。只要保持測試步驟需要共享會話夾具在單個規格方法。

+0

感謝您的答案。真的很感激它。我設法使用Geb中的「withNewWindow(Closure windowOpeningBlock,Closure block)」方法,它工作得很好。但現在正努力將重點放在該窗口繼續進行功能測試。出於某種原因焦點返回到第一個窗口,測試失敗。 –

+0

我已經設法找到上面我的查詢的答案。正如上面提到的,我用withNewWindow()方法如下:withNewWindow({AnchorForNewPage.click()}){ \t \t \t斷言在(NewPage公司) \t \t \t做一些事情,別的東西}確保你的行動上執行第二頁全部在這個閉包中,否則測試將失敗。 –

+0

很高興聽到這一點。你原來的問題是關於瀏覽器之間的共享會話。我是否理解我的答案符合這個問題?如果是,您可以考慮將答案標記爲已接受。 – topr