在轨道中用水豚和硒测试谷歌地图标记



我有一个谷歌地图页面,可以搜索一个地址,然后显示100英里内的标记。我正在尝试测试我的标记是否有一个内容窗口,当使用水豚、硒和 Rails 单击时会弹出该窗口。

我收到一条错误消息,指出"Selenium::WebDriver::Error::ElementNotInteractableError:无法将元素滚动到视图中" 有谁知道如何解决这个问题或更好的方法来测试谷歌地图标记的弹出内容窗口?滚动在谷歌地图中不起作用,所以我假设这就是发生这种情况的原因。

it 'enters in an address for IN Adjusters', js: true do
visit '/maps'
fill_in 'address', with: '4511 W 200 S'
click_button('Search')
sleep(5)
element = find('map#gmimap0')
element.click
expect(page).to have_content("Burke Eric")
end

这里的问题是,从技术上讲,map#gmimap0元素的高度为 0px,因此驱动程序在确定实际单击的位置时遇到了问题。 如果您使用带有硒的Chrome,并且map#gmimap0元素有一个大小的孩子(例如area元素(,那么您可以这样做

find('map#gmimap0 area').click

它可能会起作用,但是我相信您正在使用带有硒的Firefox,由于壁虎驱动程序或Firefox中的错误,它仍然无法像那样工作。幸运的是,有一种方法可以在任一浏览器中工作,即指定单击偏移量。这导致硒不必担心元素大小,只需单击页面上与元素位置偏移的位置。

find('map#gmimap0').click(x: 10, y: 10) # offset x an y within the size of the marker

在查找地图标记时,您可以尝试使用 Capybara 的visible: false属性:

element = find('map#gmimap0', visible: false)

这应该允许您调用click方法,只要该元素在 DOM 中可用。

谢谢!

相关内容

  • 没有找到相关文章

最新更新