capybara提供fill_in、click_button、select、check/choose、send_keys五大核心方法:分别用于文本输入、按钮链接点击、下拉选择、复选单选控制及键盘事件模拟,均支持多策略定位与自动等待。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

一、文本输入:使用fill_in填充表单字段
fill_in是Capybara中专用于向文本框、密码框及文本区域注入内容的核心方法,它能自动识别并定位目标字段,无需手动等待元素加载。
1、通过标签文本定位并填入值:fill_in '用户名', with: 'test_user'
2、通过ID属性精准匹配:fill_in 'user_email', with: 'test@example.com'
3、利用占位符(placeholder)定位动态渲染的输入框:fill_in with: 'password123', placeholder: '请输入密码'
4、使用测试ID(test_id)提升稳定性,避免因UI重构导致定位失效:fill_in with: 'China', test_id: 'country_select'
二、按钮与链接点击:click_button与click_link的差异化应用
click_button和click_link分别针对表单提交控件与导航类元素设计,二者均具备智能查找与同步等待能力,可准确响应可见且可交互状态。
1、按按钮显示文本触发操作:click_button '提交订单'
2、按按钮name属性定位(适用于无可见文本的submit按钮):click_button name: 'commit'
3、点击带href的链接跳转:click_link '个人资料'
4、通过ID快速命中链接元素:click_link id: 'nav-profile'
三、下拉框选择:select方法的多策略匹配
select方法专用于处理
1、依据下拉框标签文本定位并选择选项:select '广东省', from: '所在省份'
2、直接指定
元素ID进行操作:select 'M', from: 'size_select'
3、在嵌套作用域内限定选择范围(如模态框中):within('#shipping-modal') { select '顺丰速运', from: 'delivery_method' }
4、强制启用模糊匹配以应对多语言或截断文本:select 'Chrome', from: 'browser', exact: false
四、复选框与单选按钮:check、uncheck与choose的精确控制
check与uncheck用于操作checkbox类型输入,choose则专用于radio类型;三者均会校验目标是否已处于期望状态,避免重复触发事件。
1、勾选指定标签文本的复选框:check '我已阅读并同意用户协议'
2、通过ID取消勾选:uncheck id: 'newsletter_optout'
3、选择同一组单选按钮中的某一项:choose '信用卡支付'
4、使用value属性精确定位单选按钮(适用于无明确标签场景):choose value: 'alipay'
五、键盘事件模拟:send_keys实现细粒度输入控制
send_keys绕过fill_in的抽象层,直接向DOM元素发送原始按键序列,适用于需要模拟用户打字节奏、组合键或特殊行为(如清空、补全)的场景。
1、向已定位的邮箱输入框逐字符输入:page.find('input[type="email"]').send_keys('test@example.com')
2、模拟Tab键切换焦点至下一字段:page.send_keys :tab
3、组合键操作——全选后删除:page.find('#username').send_keys([:control, 'a'], :backspace)
4、分步输入模拟真实打字过程(用于测试自动补全):page.find('#address').send_keys('Ocea', :left, 'n', 'side')











