如何修复executeScript执行时出现的missing ) after argument list错误?
执行含单引号的脚本时出现语法错误的解决方法
问题场景
我使用以下代码:
Store text | xpath=(//button[contains(@type,'button')])[4] | ots execute script | return ${ots}.includes("Mis OT's"); | otsmod if | ${otsmod} == true echo | Mis OT's OK
执行时触发错误:
Error:executeScript on return ${ots}.includes("Mis OT's"); with value otsmod Failed:missing ) after argument list
我推测错误和字符串中的单引号有关,因为不含单引号的类似代码可正常运行:
store text | xpath=(//button[contains(@type,'button')])[3] | agen execute script | return ${agen}.includes("Agendamientos"); | agend if | ${agend} == true echo | Agendamientos OK
原因分析
错误确实由字符串内部的单引号引发语法冲突。解析"Mis OT's"时,字符串里的单引号会被误判为JavaScript代码的语法终止符,导致代码结构错乱,出现括号不匹配的报错。
解决办法
可以通过三种方式规避这个问题:
- 转义内部单引号:在字符串内的单引号前添加反斜杠,明确告知解析器这是字符串的一部分:
execute script | return ${ots}.includes("Mis OT\'s"); | otsmod - 切换字符串包裹符号:将外层的双引号换成单引号,同时转义内部的单引号,避免语法冲突:
execute script | return ${ots}.includes('Mis OT\'s'); | otsmod - 使用模板字符串:如果测试工具支持ES6语法,用反引号包裹字符串,内部单引号无需转义,写法更直观:
execute script | return ${ots}.includes(`Mis OT's`); | otsmod
内容的提问来源于stack exchange,提问作者Baltasar Magaña
相关产品推荐
相关产品推荐

