Botium Box爬虫测试Watson Assistant按钮功能异常问题咨询
看起来你遇到的问题大概率是Botium Box爬虫在解析带有长文本、特殊字符/标点的Watson Assistant按钮时,出现了格式解析错误,导致发送给Watson的内容不符合预期。下面我们一步步拆解问题并给出解决方向:
问题核心分析
从你描述的测试用例和Watson的响应来看:
- 在Watson原生的「Try it Out」中,点击"Password"按钮会正确发送
password(按钮对应的payload值),触发节点条件input.text=="password" or input.text.contains("password") - 但Botium生成的测试用例中,使用了
#me BUTTON password|Password格式,最终Watson接收到的却是单词BUTTON——这说明Botium的按钮解析/发送逻辑出现了异常,没有正确提取并发送按钮的payload值,反而错误地发送了格式前缀。
你提到其他短按钮(如"是/否")能正常工作,进一步验证了问题出在长按钮文本+特殊字符的场景:初始回复的按钮列表包含逗号、斜杠、空格等特殊字符,且部分按钮文本很长,Botium的自动解析规则可能在分割按钮、区分label和value时出现了混乱。
排查与解决步骤
手动验证测试用例格式
先修改生成的测试用例,把#me BUTTON password|Password改成直接发送#me password,运行测试看是否能触发Watson的正确响应。如果可以,说明问题确实出在Botium生成的按钮交互格式上。检查Botium Watson适配器配置
确认Botium Box中Watson Assistant适配器的设置,是否开启了「正确处理按钮payload」的选项——有些适配器需要明确配置,才能将按钮点击转换为发送对应的payload值,而非按钮显示文本或格式指令。查看Botium发送的实际请求日志
在Botium Box中开启请求日志,查看发送给Watson Assistant的API请求内容,确认Botium实际发送的文本是什么:- 如果发送的是
BUTTON password|Password,那Watson的条件input.text.contains("password")理论上应该触发,这时候可能需要检查Watson节点的条件是否有其他限制(比如上下文变量) - 如果发送的确实只有
BUTTON,那就是Botium的爬虫解析按钮列表时出错了。
- 如果发送的是
针对特殊按钮调整爬虫规则
由于你的按钮列表包含大量特殊字符(逗号、破折号等),Botium默认的按钮分割规则可能失效。你可以自定义Botium爬虫的按钮解析逻辑:- 明确指定按钮的分隔符(比如Watson按钮在API返回中是独立的对象,爬虫应该遍历每个按钮对象提取label和value,而非按文本分割)
- 对包含特殊字符的按钮文本进行转义处理,避免解析时被误分割。
反馈可能的Botium爬虫Bug
如果以上步骤都无法解决,大概率是Botium Box爬虫在处理复杂按钮列表时存在解析Bug。你可以整理好测试用例、按钮文本示例和日志,提交给Botium的支持团队排查。
内容的提问来源于stack exchange,提问作者Andrew R. Freed

