2014-10-20 1 views
0

Мы используем этот API Google https://developers.google.com/places/documentation/autocomplete, и я хотел бы автоматизировать тестовый пример, чтобы выбрать конкретный адрес.Watir-webdrive как автоматизировать автозаполнение google place

<fieldset class="control-group"> 
<a class="button small grey search-again" style="display: none;" href="#"> Erneut versuchen </a> 
<input class="address-search" type="text" data-required="true" placeholder="Geben Sie Ihre Adresse ein" autocomplete="off"> 

это текстовое поле, которое необходимо заполнить. Я попытался

@address_page.address_line1 = line1 
text_field(:address, :class => 'address-search') 

но просто открыть список предложений и не выбирает ту, которую я дал на входе, и я эту ошибку

Element is not currently visible and so may not be interacted with (Selenium::WebDriver::Error::ElementNotVisibleError) 
     [remote server] file:///var/folders/zg/1303qv_56kjc0r43rpb9h0b40000gp/T/webdriver-profile20141020-26884-1it1xd2/extensions/[email protected]/components/command_processor.js:10816:in `DelayedCommand.prototype.checkPreconditions_' 

Ant предложение о том, как решить эту проблему?

+0

После ввода текста в текстовое поле, как вы выбираете элемент из списка автозаполнения? Это то, где вы получаете исключение видимости (то есть, какая именно команда генерирует это исключение)? –

+0

Это то, что я не могу сделать, как я могу выбрать элемент в списке, который открывается? – fege

ответ

1

При работе с полем автозаполнения Google, вам необходимо:

  1. типа что-то в текстовом поле
  2. Дождитесь список предложений, чтобы появиться. Это делается для того, чтобы избежать того, что Ватир пытается взаимодействовать с предложениями до их загрузки.
  3. Нажмите один из элементов div, представляющих предложение.

Вот рабочий пример с использованием примера API v3 страницу Google Maps JavaScript:

# Go to the page 
browser = Watir::Browser.new 
browser.goto('http://code.google.com/apis/maps/documentation/javascript/examples/places-autocomplete.html') 

# For the test page, the places autocomplete is in an iframe 
iframe = browser.div(id: 'gc-content').iframe 

# Get the autocomplete field 
autocomplete = iframe.text_field(id: 'pac-input') 

# Type something into the autocomplete field 
autocomplete.set('Aus') 

# Wait for the list of suggestions to be displayed 
suggestion_menu = iframe.div(class: 'pac-container') 
suggestion_menu.wait_until_present 

# Click one of the suggestions, in this case, we clicked the second suggestion 
suggestion_menu.div(class: 'pac-item', index: 1).click 

# Check that the autocomplete value is updated 
p autocomplete.value 
#=> "Australian Capital Territory, Australia" 

Обратите внимание, что вы, возможно, придется настроить скрипт для конкретной реализации. Например, идентификатор текстового поля может не быть «pac-input». Однако общая концепция должна применяться к этому и многим другим полям автозаполнения.

Смежные вопросы