Selenium中driver.execute_script遇特殊字符报Unexpected token错误原因
报错原因及解决方案
报错核心原因
你直接将Python列表转为字符串后拼接进JavaScript代码,引发了两个关键问题:
- Python的
str(list_of_words)会生成带括号、逗号的列表格式字符串(比如['"Fresh apple"', '"green apple"~2', '"spoiled apple"~1']),拼入JS后,JS会把列表内的内容当作表达式解析。 - 对于
"green apple"~2这类内容,JS会把~识别为按位取反运算符,但字符串和数字直接用该运算符的写法不符合JS语法规则,因此抛出Unexpected token '~'的语法错误。 - 此外,这种拼接方式还会保留Python列表的括号、逗号,完全不符合你需要的换行输出格式。
正确实现代码
要快速设置textarea值、保留特殊字符并输出换行格式,正确的做法是:
- 用换行符
\n将Python列表元素连接成目标格式的字符串; - 通过
execute_script的参数传递字符串,避免直接拼接JS代码导致的语法问题。
修改后的代码如下:
list_of_words = ['"Fresh apple"','"green apple"~2','"spoiled apple"~1'] # 用换行符拼接成期望的字符串格式 target_content = '\n'.join(list_of_words) # 通过arguments[0]接收Python传入的参数,避免JS语法错误 driver.execute_script(""" document.getElementById('section').getElementsByTagName('textarea')[0].value = arguments[0]; """, target_content)
这样设置后,textarea的内容会完全匹配你的期望输出,同时不会触发任何JS语法错误。
内容的提问来源于stack exchange,提问作者Ashcube
相关产品推荐
相关产品推荐

