Selenium WebDriver очень медленно печатает в текстовом поле в браузере IE
Я запускаю один из своих сценариев в браузере IE 11
с Selenium 2.43.1
когда типы script в текстовом поле используются следующим образом:
element.sendKeys("string");
В браузере IE я вижу, что один символ строки вводится в текстовое поле, и он ждет 1-2 секунды, прежде чем вводить следующий символ. Средство для ввода одного символа занимает 1-2 секунды.
- Зачем так медленно печатать с IE?
- Есть ли альтернативный способ ускорения ввода?
Ответы
Ответ 1
Моя проблема была с архитектурой драйвера, и исправил ее, загрузив и используя 32-битную.
Чтобы переключиться на 32-битный режим, вам нужно сделать следующее:
- Загрузите 32-разрядную версию драйвера с http://selenium-release.storage.googleapis.com/index.html
Создайте свой класс InterExplorerWeDriver
, используя
Класс InternetExplorerDriverService
с путем к 32-битному драйверу
обслуживание.
InternetExplorerDriver ieDiver = new InternetExplorerDriver('Path to the 32 bit Explorer driver');
ИЛИ, если используется строитель:
System.setProperty('webdriver.ie.driver','C:\\drivers\\IEDriverServer.exe');
DesiredCapabilities ieCapabilities=DesiredCapabilities.internetExplorer();
ieCapabilities.setCapability(InternetExplorerDriver
.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);
ieCapabilities.setCapability("requireWindowFocus", true);
File ie_temp=newFile('C:\\Selenium\\IEDrivertemp');
InternetExplorerDriverService.Builder
ies=newInternetExplorerDriverService.Builder();
ies.withExtractPath(ie_temp);
InternetExplorerDriverService service=ies.build();
WebDriver driver=newInternetExplorerDriver(service,ieCapabilities))
Тема, которая помогла мне решить
http://forumsqa.com/question/typing-too-slow-in-text-fields-while-replaying-tests/
Ответ 2
Для меня это работало с 64-битной версией IEDriverServer. Я добавил свойство requireWindowFocus с "истинным" значением:
DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
...
capabilities.setCapability("requireWindowFocus", true);
WebDriver driver = new InternetExplorerDriver(capabilities);
Я использую версию 2.47 драйвера Selenium/IE
Ответ 3
Для 64-битного WebDriver:
- Откройте IE
- Перейдите в Свойства обозревателя → Дополнительно → Безопасность
- Установите флажок ☑ Включить 64-разрядные процессы для расширенного защищенного режима
- Нажмите Применить и OK
Для 32-битного WebDriver:
- Откройте IE
- Выберите "Свойства обозревателя" → "Дополнительно" → "Безопасность"
- .Снимите отметку ☐ Включить 64-разрядные процессы для расширенного защищенного режима
- Нажмите Применить и OK
странно:
- Настройка была необходима независимо от того, был активирован расширенный защищенный режим или нет.
- За исключением текста в диалоговом окне, перезагрузка компьютера не требовалась.
Мои настройки: Windows 10, IE 11, все 64 бит, Selenium 3.4
Ответ 4
Это ускорилось для меня немного. IEDriverServer 2.53.1
InternetExplorerOptions options = new InternetExplorerOptions();
options.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
options.RequireWindowFocus = true;
driver = new InternetExplorerDriver(options);
Ответ 5
Вы можете перейти к 32-разрядной версии, но если требуется 64-разрядная версия, вы можете попробовать это решение:
- Свойства обозревателя → Безопасность → Установите флажок "Включить защищенный режим" для всех зон
- Перейдите в Дополнительно → Безопасность → Установите флажок "Включить расширенный защищенный режим"
Это приводит к тому, что в 64-разрядной версии IE больше не нужно вводить улитки.
Ответ 6
У меня была такая же проблема при использовании 64-битной версии IEDriverServer. Перейдите на 32-битный, и он отлично работает.
Источник:
WebDriver и IE10 очень медленный ввод
Ответ 7
У меня также была одна и та же проблема. Вы можете опробовать
Свойства обозревателя → Подключения → Настройки локальной сети → Уклонение Автоматическое определение настроек.
Надеюсь, что это поможет.
Ответ 8
Для тестов, запущенных на 64-разрядной версии IE11, настройка NATIVE_EVENTS
на false
работала для меня.
Без него использование 64-битного сервера драйверов 3.0 было очень медленным, как сообщалось.
32-битный сервер драйверов 3.0 проглотил некоторые из символов, которые он должен был отправить (например, "FluentLenium" стал "FlntLnum" ).
Следующие проблемы решены.
DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(InternetExplorerDriver.NATIVE_EVENTS, false);
WebDriver driver = new InternetExplorerDriver(capabilities);
Я не уверен, есть ли у этого дополнительные побочные эффекты.
Ответ 9
Я также столкнулся с той же проблемой с IE11 на бит x64 для Windows. Я использовал 64-битную версию IEDriverServer.exe(IE-драйвер 3.7.0 с селеном-3.7.0).
После того, как я перешел на 32-разрядную версию IEDriverServer.exe, она решила проблему
Ответ 10
Это, вероятно, проблема с машиной, на которой вы запускаете тест. Если вы столкнулись с общей задержкой с компьютером, это произойдет.
Есть ли альтернативный способ ускорения ввода?
Конечно, вы можете создать собственный метод для очистки текста, а затем использовать JavaScript для заполнения поля. (помните, что вы это делаете, возможно, не сможете работать с такими вещами, как "typeahead" и "предложения при вводе" )
Ответ 11
Я боролся почти за день, чтобы узнать. Это связано с тем, что 64-разрядный драйвер IE отключен (IEDriverServer_x64_2.53.1
).
Я переключился на IEDriverServer_Win32_2.53.1
, тогда он сработал, теперь он сверхбыстрый!
Ответ 12
Для меня это работало с 64-битной версией IEDriverServer
. Я добавил свойство requireWindowFocus
с "истинным" значением:
Но не в состоянии выполнить на mousehovers error:stacktrace information is not available
Ответ 13
Отключение NATIVE_EVENT разрешило мою проблему
DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(InternetExplorerDriver.NATIVE_EVENTS, false);
driver = new InternetExplorerDriver(capabilities);
Ответ 14
Вы можете перейти на 32-битную версию, скорость будет сравнима с 64-разрядной версией.
Ответ 15
Вместо WebEelement.send.keys я использовал объект Actions с методом sendKeys. Это работало как прелесть.
Ответ 16
Чтобы повысить скорость отправки ключей, можно выполнить следующие шаги: -
- Перейдите в project--> properties-> Java compiler--> в разделе "Соответствие Java" --deselect и выберите параметр "Использовать соответствие", измените уровень соответствия при компиляции до 1,7 и нажмите "Применить".
Это будет работать гладко.
Ответ 17
Для IEServerDriver 3.14.0 это работает для ускорения набора текста.
WebDriver browser;
InternetExplorerOptions options = new InternetExplorerOptions();
options.disableNativeEvents();
options.requireWindowFocus();
browser = new InternetExplorerDriver(options);
Метод DesiredCapabilities устарел, и options.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
и options.RequireWindowFocus = true;
больше не доступны.
Ответ 18
Следующий код помог мне решить проблему.
DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
...
capabilities.setCapability("requireWindowFocus", true);
WebDriver driver = new InternetExplorerDriver(capabilities);