我正在尝试发送一个表情符号。我试图通过应对信号发送它,但它引发了这个例外。
OpenQA.Selenium.WebDriverException: 'unknown error: ChromeDriver only supports characters in the BMP
我尝试将其作为unicode发送,但没有任何成功。它是一个令人沮丧的标志。
input.SendKeys("/u1F44D")
发送表情符号的正确方法是什么?
答案 0 :(得分:0)
此错误消息...
OpenQA.Selenium.WebDriverException: 'unknown error: ChromeDriver only supports characters in the BMP
...表示 ChromeDriver 无法发送表情符号,即?通过SendKeys()
方法发出信号。
从@JimEvans answer中提取叶子,目前ChromeDriver仅支持 Plane 0 (即目前的Basic Multilingual Plane (BMP))中的代码点。
使用 GeckoDriver / Firefox 或 IEDriverServer / IE 组合可以为您带来更好的结果。
您可以在Web Platform Test Suite中找到专门发送表情符号的特定测试的当前状态,这些测试也适用于其他浏览器。
但是,要通过C#发送表情符号,您可以使用以下语法:
input.SendKeys("\u1F44D");
答案 1 :(得分:0)
解决方案
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}
是可选的(由于复杂的包装输入,我需要这样做)