如何模拟与Capybara共享地理定位?

时间:2011-09-09 21:02:52

标签: ruby-on-rails html5 testing geolocation capybara

我的方案要求用户授予应用程序用户所在位置的权限。每个浏览器中此对话框看起来都不同我如何用Capybara进行测试?

4 个答案:

答案 0 :(得分:1)

我在Cucumber步骤定义中成功使用了它:

page.execute_script "navigator.geolocation.getCurrentPosition = function(success) { success({coords: {latitude: 50.455755, longitude: 30.511565}}); }"

答案 1 :(得分:0)

如果我需要测试套件流程并且不想调用API,我会模拟/存根。 不幸的是,有了自动测试的所有优点,仍有一些需要手动完成。至少我从我的经验中学到了什么。

答案 2 :(得分:0)

如果您使用Chrome进行测试,那么这可能会有所帮助:

How do I enable geolocation support in chromedriver for Selenium?

答案 3 :(得分:0)

所以,我喜欢上面的page.execute_script版本...但是我发现这不适用于Turbolinks。

经过大量Google搜索后,我提出了另一种选择:

page
  .driver
  .browser
  .execute_cdp(
    'Page.setGeolocationOverride',
    accuracy: 100,
    latitude: latitude.to_f,
    longitude: longitude.to_f
  )

我不是这个解决方案的忠实拥护者,因为它正在访问他们的“私有api”的一部分,当然,他们会建议反对...但是它现在仍然有效。

更新:目前,此功能适用于selenium_chrome驱动程序,但不适用于selenium_chrome_headless ...回到绘图板。