Подтвердить что ты не робот

Selenium WebDriver очень медленно печатает в текстовом поле в браузере IE

Я запускаю один из своих сценариев в браузере IE 11 с Selenium 2.43.1 когда типы script в текстовом поле используются следующим образом:

element.sendKeys("string");

В браузере IE я вижу, что один символ строки вводится в текстовое поле, и он ждет 1-2 секунды, прежде чем вводить следующий символ. Средство для ввода одного символа занимает 1-2 секунды.

  • Зачем так медленно печатать с IE?
  • Есть ли альтернативный способ ускорения ввода?
4b9b3361

Ответ 1

Моя проблема была с архитектурой драйвера, и исправил ее, загрузив и используя 32-битную.

Чтобы переключиться на 32-битный режим, вам нужно сделать следующее:

  1. Загрузите 32-разрядную версию драйвера с http://selenium-release.storage.googleapis.com/index.html
  2. Создайте свой класс 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:

  1. Откройте IE
  2. Перейдите в Свойства обозревателя → Дополнительно → Безопасность
  3. Установите флажок ☑ Включить 64-разрядные процессы для расширенного защищенного режима
  4. Нажмите Применить и OK

Для 32-битного WebDriver:

  1. Откройте IE
  2. Выберите "Свойства обозревателя" → "Дополнительно" → "Безопасность"
  3. .Снимите отметку ☐ Включить 64-разрядные процессы для расширенного защищенного режима
  4. Нажмите Применить и 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

Чтобы повысить скорость отправки ключей, можно выполнить следующие шаги: -

  1. Перейдите в 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);