You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Capybara选择Google地址自动补全下拉选项?

解决Capybara点击Google地址自动补全选项的问题

你的问题出在没找对Google自动补全生成的下拉选项的DOM结构,之前用的方法都不适用:

  • select方法只针对原生HTML的<select>标签,而Google的下拉是动态生成的div容器,完全不匹配。
  • find('#autocomplete', text:...)是在输入框元素里找文本,但下拉选项根本不在这个input里,自然找不到。

正确的操作步骤

Google地址自动补全的下拉选项,会被渲染在一个class为pac-container的容器中,每个选项对应pac-item类的元素。你可以按以下代码操作:

# 填充地址到输入框
fill_in 'Location', with: "Toronto ON Canada"
# 等待下拉容器加载完成(Ajax请求需要时间,设置5秒超时足够)
pac_container = find('.pac-container', wait: 5)
# 找到包含目标地址的选项并点击,用正则模糊匹配更稳妥(避免选项带额外细节)
pac_container.find('.pac-item', text: /Toronto ON Canada/).click

解决调试时下拉消失的问题

你在binding.pry调试时切换窗口下拉就消失,是因为Google的自动补全会在页面失去焦点时隐藏。可以在pry里执行这段JS强制显示下拉容器,就能用Chrome工具检查元素了:

page.driver.browser.execute_script("document.querySelector('.pac-container').style.display = 'block'")

额外注意点

如果直接填充输入框不选下拉会触发错误,说明前端做了校验,必须通过点击下拉选项来触发地址的合法校验逻辑,所以一定要确保点击的是pac-item元素,而不是只填输入框。

内容的提问来源于stack exchange,提问作者daveasdf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 09:22:41