Ruby Watir操作Form下拉框无法定位元素触发选择问题咨询
问题根因
你使用的Watir::Browser#select方法仅适用于HTML原生<select>标签实现的下拉组件。你贴出的DOM结构显示该站点使用的是Telerik RadComboBox模拟下拉,name="dpdCemetery"对应的是普通text输入框,不存在原生<select>标签,因此触发定位超时错误。
可行解决方案
替换你代码中定位下拉的错误代码即可,推荐用模拟真实用户操作的方案,兼容性最好:
# 替换原 a.select(name: 'dpdCemetery').select('Beechwood') 行 # 1. 点击下拉箭头触发选项加载 a.a(id: 'dpdCemetery_Arrow').click # 2. 等待下拉容器加载完成 a.div(id: 'dpdCemetery_DropDown').wait_until(&:present?) # 3. 点击目标选项 a.div(id: 'dpdCemetery_DropDown').element(text: 'Beechwood').click
如果希望更快执行,也可以直接给输入框赋值并触发变更事件:
# 给模拟输入框填值 a.text_field(id: 'dpdCemetery_Input').set('Beechwood') # 触发change事件让前端组件识别值变更 a.text_field(id: 'dpdCemetery_Input').fire_event('change')
注意事项
如果站点对下拉输入做了输入联想限制,优先使用第一种点击选择的方案,避免触发前端校验拦截。
内容的提问来源于stack exchange,提问作者Rich_F
相关产品推荐
相关产品推荐

