我正在尝试使用Rails3测试谷歌地图应用程序.我正在使用带有水豚和硒的黄瓜进行
JavaScript测试.
我有一张地图,我等待加载谷歌地图,然后发送一个ajax请求到我的服务器,在那里我得到我插入地图的位置.
我想知道是否可以使用selenium等到加载谷歌地图,完成对我的服务器的ajax调用并将标记放在地图内.另一个问题是,如何在谷歌地图中选择此标记.有选择器吗?
我有一张地图,我等待加载谷歌地图,然后发送一个ajax请求到我的服务器,在那里我得到我插入地图的位置.
我想知道是否可以使用selenium等到加载谷歌地图,完成对我的服务器的ajax调用并将标记放在地图内.另一个问题是,如何在谷歌地图中选择此标记.有选择器吗?
或者我应该走另一条路,并使用像Jasmine这样的JS测试框架来测试我的类是否已加载等等.我对Jasmine没有任何经验,所以可以测试谷歌地图吗?
也许有人知道一个解决方案,或者一个提示,如果它不可能,或者解决方法或…;)
[更新1]
我已经找到了如何在谷歌地图中选择标记.如果你看googles selenium tests,你可以看看他们在做什么.例如,选择标记:
waitForElementPresent xpath=//img[contains(@src,'marker')]
但接下来是下一个问题.如何选择特定标记?是否有一种方法可以在javascript google maps API中为其分配ID,以便我可以使用#marker_1,#marker_2 …?
另一个奇怪的事情是,我的黄瓜步骤定义中没有像wait_for_element或wait_for_condition这样的函数.谷歌selenium测试是否使用自己的函数,如waitForElementPresent?或者这个标准的硒功能是什么?我发现了很多帖子,他们总是使用类似的东西
selenium.wait_for_condition selenium.wait_for_element or @selenium.wait_for_condition ...
在我的步骤定义中,selenium和@selenium var a nil.我该如何访问这些方法?我也发现了这个post,但它是从08年10月开始的,所以我认为必须有一个更好的解决方案(顺便说一句.这个解决方案一见钟情).
就像在page上一样,他们概述了一些如何等待条件或元素的硒方法.这仍然存在吗?我该如何使用这个功能?
[更新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”)访问它时,它找不到它.所以,还没有解决方案.