Selenium读取含Unicode表情的文件内容并输入到文本框的实现问题
Selenium发送带表情的Unicode内容解决方案
核心问题排查
你当前的代码存在3个导致功能异常的问题:
- 读取文件时未对
\u开头的Unicode转义序列做解码,文件中的\uD83D\uDD25会被识别为普通字符串,不会转为对应的🔥表情 readlines()会返回行内容列表,直接插入字符串会带出列表的[]标识、多余引号等格式- 你写的多行字符串没有加
f前缀,{lines}不会被替换为实际的变量内容,只会作为普通文本发送
修正后代码
# 读取文件并完成Unicode转义解码,完整保留原文件格式、表情符号 with open('file.txt', 'r', encoding='utf-8') as f: # 先读取原始字符串,再转字节后用unicode_escape解码转义序列 file_content = f.read().encode('utf-8').decode('unicode_escape') test = driver.find_element_by_xpath("//input[@title='Search']") # Selenium send_keys原生支持Unicode,直接传入解码后的内容即可 test.send_keys(file_content)
可选适配调整
- 如果你的文件编码不是UTF-8,修改
open方法的encoding参数为对应编码即可(比如utf-16对应带BOM的UTF-16文件) - 如果需要在发送内容前后加空行,直接拼接字符串即可:
test.send_keys(f"\n\n{file_content}\n\n")
内容的提问来源于stack exchange,提问作者Bobby Boffer
相关产品推荐
相关产品推荐

