AutoIT实现Selenium多文件上传时双引号嵌套报错如何解决
AutoIT多文件上传脚本第3行语法错误修复方案
错误原因
AutoIT语法规则中,双引号同时承担字符串边界标识、字符串内字面量双引号转义的作用:
- 使用双引号作为字符串包裹符时,字符串内部需要展示的字面量双引号,必须连续书写2个双引号完成转义
- 你当前第3行的最后一个参数写法混淆了参数边界双引号和内容内的双引号,导致解释器无法正确识别字符串起止位置,直接触发语法错误。
修复方案
你需要向输入框传入的多文件名格式为"docx file" "csv file"(Windows文件选择框多文件选中的标准格式),有两种合规写法可以实现:
写法1(推荐,无需转义可读性高)
AutoIT支持单引号作为字符串包裹符,外层用单引号包裹目标字符串时,内部的双引号不需要额外转义,修复后完整代码如下:
ControlClick("Open","","SysTreeView321") ControlFocus("Open","","Edit1") ControlSetText("Open","","Edit1",'"docx file" "csv file"') ControlClick("Open","","Button1")
写法2(全双引号转义写法)
如果坚持统一使用双引号作为字符串包裹符,需要将字符串内部的每个字面量双引号替换为2个连续双引号,对应第3行代码修改为:
ControlSetText("Open","","Edit1","""docx file"" ""csv file""")
写法说明:首尾各1个双引号是字符串边界,内部每2个连续双引号会被解析为1个字面量双引号,最终传入输入框的内容和写法1完全一致。
注意事项
Selenium对接AutoIT实现多文件上传时,必须保证每个文件路径单独用双引号包裹、文件间用半角空格分隔,上述修复后的代码完全符合格式要求,不会出现文件识别失败问题
内容的提问来源于stack exchange,提问作者Pratik P
相关产品推荐
相关产品推荐

