You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Appium SendKeys输入表情符号显示为��的问题求助

问题:Appium C#向Android文本框输入表情符号出现乱码

我开发了一个WinForms应用,已通过NuGet安装最新稳定版Appium,尝试向Android文本框输入表情符号时,实际输出始终为“��”。

代码示例

using OpenQA.Selenium.Appium.Android;
using OpenQA.Selenium.Appium.Enums;
using OpenQA.Selenium.Appium;
using System.Windows.Forms;
using System;

var appiumOptions = new AppiumOptions();
appiumOptions.AddAdditionalCapability(MobileCapabilityType.PlatformName, "Android");
appiumOptions.AddAdditionalCapability(MobileCapabilityType.DeviceName, "1234");
appiumOptions.AddAdditionalCapability(MobileCapabilityType.AutomationName, "UiAutomator2");
         

var driver = new AndroidDriver<AndroidElement>(new Uri("http://127.0.0.1:4723/wd/hub"), appiumOptions);

AndroidElement messageBox = driver.FindElementById("com.app:id/simple_text");                
messageBox.SendKeys("😊");

请求差异对比

  • C#程序发送的请求:
    [HTTP] {"text":"😊","value":["�","�"]}
    
  • Appium会话管理器发送的请求:
    [HTTP] {"value":["😊"],"text":"😊"}
    

已知使用Selenium WebDriver可正常输入,但非最优方案,寻求解决办法。


解决办法

1. 用SetValue替代SendKeys

SendKeys会将表情符号拆分为UTF-16代理对,导致value数组被拆分,而SetValue可直接传递完整的表情字符串:

// 替换原SendKeys代码
messageBox.SetValue("😊");

2. 使用Actions类模拟输入

通过Actions构建输入动作,规避字符拆分问题:

var actions = new OpenQA.Selenium.Interactions.Actions(driver);
actions.SendKeys(messageBox, "😊").Perform();

3. 手动构造合规HTTP请求(兜底方案)

若上述方法无效,可直接调用Appium REST API,构造符合要求的请求格式:

using System.Net.Http;
using System.Text.Json;

var elementId = messageBox.Id;
var requestBody = new { value = new[] { "😊" }, text = "😊" };
var json = JsonSerializer.Serialize(requestBody);

using var client = new HttpClient();
await client.PostAsync(
    $"http://127.0.0.1:4723/wd/hub/session/{driver.SessionId}/element/{elementId}/value",
    new StringContent(json, System.Text.Encoding.UTF8, "application/json")
);

4. 匹配Appium客户端与服务端版本

检查NuGet安装的Appium.WebDriver版本是否与Appium服务端版本兼容,部分版本存在字符编码处理bug,可尝试降级或升级到匹配的稳定版本。


内容的提问来源于stack exchange,提问作者maddo7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 04:12:52