Как отключить нативный набор текста в Chrome

Доброго часа всем.

Коллеги, подскажите, как для браузерa GoogleChrome отключить нативный набор текста в поле. То есть, чтобы текст, который отправляется в филд методом sendKeys(), печатался не посимвольно, а целиком вставлялся. Тесты написаны на Selenium+Java+ и тд.

Я попытался сделать так:

DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability("nativeEvents", false);
return new ChromeDriver(capabilities);

не сработало.

chrome

сделайте перегрузку метода sendkeys, который будет текст из переменной не вводить, а вставлять, контрол+в делать в буквальном смысле

селениум же действия человека имитирует, потому и вводит посимвольно

тексты большие вводите и очень долго это происходит?

Думал над таким решением. Но оно не совсем практично. Думаю, эту проблему можно решить на уровне опций Хрома, тк в Мозиле текст в филды вводится сразу целиком.

Да, хочу таким образом оптимизировать тесты.

https://peter.sh/experiments/chromium-command-line-switches/

возможно, здесь будет ключ, который управляет вводом текста

Делайте полям инпут сет валуе через javascript

Не удалось найти ничего подходящего.
Если на уровне конфигураций сделать нельзя, то воспользуюсь вариантом, предложенным BabyRoot

Мой классический совет - используйте Selenide.
Там есть специальная опция для этого: Configuration.fastSetValue = true;
Как раз подменяет sendKeys() так, что он забивает значение через JavaScript.

2 лайка

ну так я тоже самое по сути и советовал, так как ctrl+v нынче нажатиями клавиш никак не отправить селениумом, то только джсом и остается скрипты выполнять

1 лайк

Нет, никакими опциями Хрома этого не изменить ))

На счет Selenide - нужно реструктуризировать проект. Задача не на пару дней. Спасибо, возьму на заметку.

Мне кажется, что использовать setValue более безопасно, т.к. при запуске тестов параллельно - может возникать путаница и значение для одного поля отправится из буфера в другое (в параллельном тесте)

Спасибо. На конференции от оратора услышал обратное. Вот и начал искать.

Не обязательно.
Можно оставить старый код без изменений и писать только новые кусочки на Селениде. Не проблема.

@asolntsev а ведь для супер быстрого ввода текста достаточно одного метода
Selenium WebDriver faster way to fill textboxes than Sendkeys() - Software Quality Assurance & Testing Stack Exchange или с проверками аттрибутов получателя как сделано в selenide - зачем тащить весь прокси фреймворк ( у selenide может быть имеются другие достоинства о которых я просто пока не знаю …

// 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

protected void fastSetText(String selector, String text) {
		String script = getScriptContent("setValueWithSelector.js");
		try {
			executeScript(script, selector, text);
		} catch (Exception e) {
			System.err.println("Ignored: " + e.toString());
		}
	}

@sergueik Ну понятное дело, у него есть 100500 достоинств :slight_smile: Естественно, это не единственное.
Прежде всего - стабильность тестов, см. Flaky tests are a pain (Andrei Solntsev, Estonia) [RU] - YouTube (отрывок 5:30 - 11:50)

А так да, для конкретно этой задачи достаточно скопировать к себе один этот метод. Но Селенид и состоит из кучи таких маленьких полезных методов. Можно, конечно, их все потихонечку копировать. Если ёжику нравится колоться - кто ж запретит.

вот вот расскажите или дайте убедительный линк о стопятьст достоинств и преимуществ пожалуйста

YoutuБe at work against bank policies

Так вот же, ссылка выше как раз и рассказывает. Разберитесь уж как-нибудь с ютубом.

Ну ок, тут есть и текстовая расшифровка: Flaky tests / Habr

тут есть ещё слайды на английском: selenide-geecon - Google Slides

Андрей, а назовите, пжл, недостатки фрейма. Возможно то, над чем вы работаете.

Так это ж всё в гитхабе видно: Issues · selenide/selenide · GitHub

Так чтобы прямо недостатков нет. Есть пожелания. :slight_smile:

Селенидов Селенид, селенидилил Селеняд,
Селенята сенидили селениды селениды.

Как я вижу, вопрос был задан “Как отключить…” а не “Что использовать…” :wink:

А если ребёнок вас спросит, как максимально быстро перебежать дорогу на красный свет, вы будете отвечать прямо на поставленный вопрос?

5 лайков