我正在尝试发送表情符号。我试图通过应对信号👍来发送它,但它引发了这个异常。
OpenQA.Selenium.WebDriverException: 'unknown error: ChromeDriver only supports characters in the BMP
比我试图将其作为 unicode 发送,但没有任何成功。 它不是可决定的标志。
input.SendKeys("/u1F44D")
发送表情符号的正确方法是什么?
此错误消息...
OpenQA.Selenium.WebDriverException: 'unknown error: ChromeDriver only supports characters in the BMP
。暗示ChromeDriver无法发送表情符号,即??通过SendKeys()
方法发出信号。
从@JimEvans答案中取出一片叶子,目前ChromeDriver仅支持平面0中的代码点,即目前的基本多语言平面(BMP(。
使用GeckoDriver/Firefox或IEDriverServer/IE组合会给你带来更好的结果。
您可以在专门发送表情符号的 Web 平台测试套件中找到特定测试的当前状态,这些测试也适用于其他浏览器。
但是,若要通过 C# 发送表情符号,可以使用以下语法:
input.SendKeys("u1F44D");
Javascript 代码中的解决方案
async sendKeysWithEmojis(element, text) {
const script = `var elm = arguments[0],
txt = arguments[1];elm.value += txt;
elm.dispatchEvent(new Event('keydown', {bubbles: true}));
elm.dispatchEvent(new Event('keypress', {bubbles: true}));
elm.dispatchEvent(new Event('input', {bubbles: true}));
elm.dispatchEvent(new Event('keyup', {bubbles: true}));`;
await this.driver.executeScript(script, element, text);
}
这样称呼它
const element = await this.driver.findElement(selector);
await sendKeysWithEmojis(element, '🚀😀 This one shall pass 🚀😀');
这是怎么回事?我们正在使用事件模拟本机按键
请注意,{bubbles: true}
是可选的(由于复杂的包装输入,在我的情况下需要(