我的方案要求用户授予应用程序用户所在位置的权限。每个浏览器中此对话框看起来都不同我如何用Capybara进行测试?
答案 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 ...回到绘图板。