Коллеги, подскажите, как для браузерa GoogleChrome отключить нативный набор текста в поле. То есть, чтобы текст, который отправляется в филд методом sendKeys(), печатался не посимвольно, а целиком вставлялся. Тесты написаны на Selenium+Java+ и тд.
Я попытался сделать так:
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability("nativeEvents", false);
return new ChromeDriver(capabilities);
Думал над таким решением. Но оно не совсем практично. Думаю, эту проблему можно решить на уровне опций Хрома, тк в Мозиле текст в филды вводится сразу целиком.
Мой классический совет - используйте Selenide.
Там есть специальная опция для этого: Configuration.fastSetValue = true;
Как раз подменяет sendKeys() так, что он забивает значение через JavaScript.
ну так я тоже самое по сути и советовал, так как ctrl+v нынче нажатиями клавиш никак не отправить селениумом, то только джсом и остается скрипты выполнять
На счет Selenide - нужно реструктуризировать проект. Задача не на пару дней. Спасибо, возьму на заметку.
Мне кажется, что использовать setValue более безопасно, т.к. при запуске тестов параллельно - может возникать путаница и значение для одного поля отправится из буфера в другое (в параллельном тесте)
// based on: https://github.com/selenide/selenide/blob/master/src/main/java/com/codeborne/selenide/commands/SetValue.java
var setValue = function(element, text) {
if (element.getAttribute('readonly') != undefined) return 'Cannot change value of readonly element';
if (element.getAttribute('disabled') != undefined) return 'Cannot change value of disabled element';
element.focus();
var maxlength = element.getAttribute('maxlength') == null ? -1 : parseInt(element.getAttribute('maxlength'));
element.value = maxlength == -1 ? text : text.length <= maxlength ? text : text.substring(0, maxlength);
return null;
}
var selector = arguments[0];
var text = arguments[1];
var nodes = window.document.querySelectorAll(selector);
if (nodes) {
setValue(nodes[0], text);
}
return;
я измкенил сигнатуру с WebElement, Stirng на String, String
А так да, для конкретно этой задачи достаточно скопировать к себе один этот метод. Но Селенид и состоит из кучи таких маленьких полезных методов. Можно, конечно, их все потихонечку копировать. Если ёжику нравится колоться - кто ж запретит.