我想要測試一個谷歌地圖應用與Rails3。我正在使用水豚和硒的黃瓜進行JavaScript測試。 我有一張地圖,等待谷歌地圖加載,然後發送一個Ajax請求到我的服務器,在那裏我得到我插入地圖的位置。 我想知道是否有可能與硒等待谷歌地圖加載,ajax調用我的服務器已完成,標記放置在地圖內。另一個問題是,如何在谷歌地圖中選擇此標記。有沒有選擇器?Rails3 Google地圖測試與硒
或者我應該走另一條路,並使用像Jasmine這樣的JS測試框架來測試我的類是否已加載等等。我對茉莉花沒有任何經驗,那麼是否可以測試谷歌地圖?
也許有人知道一個解決方案,或者如果它是不可能的,暗示或解決方法或...;)
[更新1]
我已經發現瞭如何在Google地圖中選擇標記。如果你看看
googles selenium tests你可以看看他們在做什麼。例如選擇一個標記:
waitForElementPresent xpath=//img[contains(@src,'marker')]
但是,接下來的問題就來了。我如何選擇特定的標記?是否有一種方法在JavaScript谷歌地圖API中爲其分配ID,以便我可以使用
#marker_1
,
#marker_2
...?
另一個奇怪的是,像wait_for_element
或wait_for_condition
這樣的函數在我的黃瓜步驟定義中不可用。谷歌硒測試使用自己的功能,如waitForElementPresent
?或者這個標準的硒功能?我找到了很多帖子,他們總是使用類似
selenium.wait_for_condition
selenium.wait_for_element
or
@selenium.wait_for_condition
...
在我的步驟定義selenium
和@selenium
VAR一比零的。我怎樣才能訪問這個方法?我也發現這個post,但它是從08年10月,所以我認爲必須有一個更好的解決方案(順便說一句,這種解決方案一見鍾情)。
像這樣page,他們給出了一些硒方法如何等待條件或元素的概述。這是否仍然存在?我怎樣才能使用這個功能?
[UPDATE 2]
靠,我已經發現,我上面提到的硒測試對谷歌地圖的V2,而不是爲V3。我試過
wait_until { page.has_xpath?("//img[contains(@src,'marker')]") }
但它不起作用。標記在地圖上是可見的,但是我得到一個超時錯誤,因爲使用這個XPath選擇器沒有找到它。我想知道是否一般可以從DOM中選擇一個標記。
我也試圖附加屬性分配給標記,當我創建它:
// marker is the marker returned by google maps after adding it to the map
$(marker).attr('id', "marker_1");
但是,當我嘗試用jQuery選擇$("#marker_1")
訪問它,它沒有找到它。所以,仍然沒有解決方案。
很好的問題,我想包括這些在我gmaps4rails寶石 – apneadiving 2011-03-24 19:23:03
我的印象是,由於硒Javascript編寫的,瀏覽器JS引擎的安全措施防止域之間的測試(如跨站點的方法腳本預防。) – Rob 2011-03-29 06:02:19