ruby-on-rails – 使用selenium进行Rails3 Google Maps测试

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 使用selenium进行Rails3 Google Maps测试前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用Rails3测试谷歌地图应用程序.我正在使用带有水豚和硒的黄瓜进行 JavaScript测试.
我有一张地图,我等待加载谷歌地图,然后发送一个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 v​​ar 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”)访问它时,它找不到它.所以,还没有解决方案.

解决方法

我用我的方法是在步骤定义中执行调用,如下所示:

page.execute_script( “launchmap()”)

然后在页面中检查它们的存在.然后在水豚进行正常的ajax检查.标记将包含在div中吗?那么如果你调用launchmap并创建标记,capybara应该能够找到你的标记

UPDATE

发现了这个插件http://vigetlabs.github.com/jmapping/examples/

它为您的谷歌地图(优雅降级)提供了语义标记,允许您使用水豚实际检查是否存在标记.希望它有所帮助(没有时间测试它,但看起来很有希望)

猜你在找的Ruby相关文章