Ruby on rails 如何模拟与水豚共享地理位置?

Ruby on rails 如何模拟与水豚共享地理位置?,ruby-on-rails,html,testing,geolocation,capybara,Ruby On Rails,Html,Testing,Geolocation,Capybara,我的场景要求用户授予应用程序使用其位置的权限。此对话框在每个浏览器中看起来都不同。如何使用Capybara对其进行测试?如果测试套件流需要它,并且不想调用API,我会对其进行模拟/存根。 不幸的是,尽管自动化测试有很多优点,但仍有少数需要手动完成。至少我从我的经历中学到了什么 如果您正在使用Chrome进行测试,那么这可能会很有帮助: 我已成功地将其用于步骤定义: page.execute_script "navigator.geolocation.getCurrentPosition = fu

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

如果测试套件流需要它,并且不想调用API,我会对其进行模拟/存根。
不幸的是,尽管自动化测试有很多优点,但仍有少数需要手动完成。至少我从我的经历中学到了什么

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


我已成功地将其用于步骤定义:

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

所以,我喜欢
页面。执行上面的脚本
版本。。。然而,我发现这不适用于TurboLink

在谷歌搜索了很多次之后,我想出了一个替代方案:

page
  .driver
  .browser
  .execute_cdp(
    'Page.setGeolocationOverride',
    accuracy: 100,
    latitude: latitude.to_f,
    longitude: longitude.to_f
  )
我不是这个解决方案的忠实粉丝,因为它访问的是他们“私有api”的一部分,他们当然不推荐。。。但它现在起作用了


更新:目前这适用于selenium\u chrome驱动程序,但不适用于selenium\u chrome\u headless。。。回到绘图板。

我喜欢这个解决方案,因为它可以模拟预期的结果,谢谢您,先生!