微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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/

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

原文地址:https://www.jb51.cc/ruby/269940.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐