Тестирование маркеров Google Map с использованием капибары и селена в Rails - PullRequest
0 голосов
/ 05 июля 2018

У меня есть страница карт Google, которая ищет адрес, а затем показывает маркеры, которые находятся в пределах 100 миль. Я пытаюсь проверить, есть ли у моих маркеров окно с контентом, которое появляется при нажатии на Capybara, Selenium и Rails.

Я получаю сообщение об ошибке "Selenium :: WebDriver :: Error :: ElementNotInteractableError: Элемент не может быть прокручен в виде" Кто-нибудь знает, как это исправить или лучший способ проверить всплывающее окно контента для маркеров карты Google? Прокрутка не работает в Картах Google, поэтому я предполагаю, что именно поэтому это происходит.

  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

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Проблема здесь заключается в том, что технически элемент map#gmimap0 имеет высоту 0px, поэтому у драйверов есть проблема с выяснением, где на самом деле щелкнуть. Если вы использовали Chrome с селеном, а у элемента map#gmimap0 был дочерний элемент с размером (например, area), то вы могли бы сделать

find('map#gmimap0 area').click

и это, вероятно, сработает, однако я полагаю, что вы используете Firefox с селеном, который по-прежнему не будет работать так из-за ошибок в geckodriver или firefox. К счастью, есть способ, который будет работать в любом браузере, который должен указывать щелчок со смещением. Это заставляет селен не беспокоиться о размере элемента и просто щелкает в месте на странице, смещенном от расположения элементов.

find('map#gmimap0').click(x: 10, y: 10) # offset x an y within the size of the marker
0 голосов
/ 05 июля 2018

Вы можете попробовать использовать свойство visible: false Capybara при поиске маркера карты:

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

Это должно позволить вам вызывать метод click, если элемент доступен в DOM.

Спасибо!

...