我们正在使用这个google APIhttps://developers.google.com/places/documentation/autocomplete我想自动化测试用例来选择一个特定的地址。
<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/fxdriver@googlecode.com/components/command_processor.js:10816:in `DelayedCommand.prototype.checkPreconditions_'
蚂蚁建议如何解决这个问题?
使用Google自动完成字段时,您需要:
- 在文本字段中键入内容
- 等待建议列表出现。这是为了避免Watir在加载建议之前尝试与建议交互的可能性
- 单击表示建议的div元素之一
下面是一个使用Google Maps JavaScript API v3示例页面的工作示例:
# 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"
请注意,您可能需要针对特定的实现调整脚本。例如,文本字段id可能不是"pac input"。然而,一般概念应该适用于这个和许多其他自动完成字段。