Это известное ограничение Chromedriver, см. http://crbug.com/chromedriver/2269 для отчета об ошибке в официальном трекере ошибок.
Что вы можете сделать, это ограничить себя только поддерживаемыми символами, в основном теми,from: http://www.columbia.edu/kermit/ucs2.html
В качестве альтернативы, вы можете смоделировать ввод вместо реальной отправки ключей с использованием внешнего JS-фрагмента, как показано ниже:
(function (element, text) {
Array.prototype.forEach.call(text, function (char) {
element.value += char;
element.dispatchEvent(new KeyboardEvent("keydown"));
element.dispatchEvent(new KeyboardEvent("keypress"));
element.dispatchEvent(new KeyboardEvent("input"));
element.dispatchEvent(new KeyboardEvent("keyup"));
});
}).apply(null, arguments);
Который вы затем вызываете с помощью JavascriptExecutor :
((JavascriptExecutor) driver).executeScript(JS_CODE, element, text);
Фрагмент работает на элементах с записываемым свойством .value
, его можно расширить для поддержки contenteditable
элементов.
Обратите внимание, что полядля событий установлены значения по умолчанию, включая коды клавиш и т. д., см. https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/KeyboardEvent Также вам может потребоваться добавить дополнительные события, которые будут запускаться, чтобы еще лучше имитировать пользовательский ввод.