web-dev-qa-db-fra.com

Comment réparer les sendkeys lents sur IE 11 avec Selenium Webdriver 3.0.0?

Firefox et Chrome fonctionnent bien, mais avec IE 11, les touches d'envoi sont extrêmement lentes. Comment résolvez-vous ce problème?

Mon environnement:

  • En cours d'exécution IE 11.103
  • Système d'exploitation Windows 10
  • J'utilise Eclipse (Version: Neon Release (4.6.0)) avec Java 1.8
  • Selenium Webdriver 3.0.0
4
Shaun Cromie

Dans mon environnement: WIN 10, Selenium 3.4, IE64 J'ai défini: Options Internet → Avancé → Sécurité → ☑ Activer les processus 64 bits pour le mode protégé amélioré

5
Miś Koala

Après avoir beaucoup lu en ligne et expérimenté

  1. Je devais définir mon chemin pour qu'il pointe vers mon pilote Web Cliquez avec le bouton droit de la souris sur mon ordinateur, puis sélectionnez "Paramètres système avancés", cliquez ensuite sur "Variables d'environnement", puis sur "Chemin" et cliquez sur Modifier. Maintenant, ajoutez le chemin à votre IEDriverServer.exe, par exemple le mien était "C:\Eclipse\webdriver\IEDriverServer.exe". Je recommanderais de redémarrer votre pc

  2. Vous devez exécuter le pilote Web IE 32 bits http://Selenium-release.storage.googleapis.com/index.html J'ai téléchargé la version 3.0.

  3. Voici maintenant la pièce d’or qui a fait toute la différence pour le monde. Configurez votre IE pour fonctionner en tant qu’administrateur. Cliquez avec le bouton droit sur le raccourci IE et sélectionnez les options. Sous l'onglet Raccourci, cliquez sur le bouton Avancé, puis cochez la case "Exécuter en tant qu'administrateur". Maintenant, redémarrez IE

  4. Lorsque vous ouvrez IE, accédez à Outils, à Options Internet, puis à l'onglet Sécurité. J'ai décoché "Activer le mode protégé" sur l'intranet local et les sites de confiance. Redémarrer IE

  5. J'ai utilisé les fonctionnalités souhaitées suivantes (j'ai trouvé cela sur Internet)

        DesiredCapabilities dc = new DesiredCapabilities();
    dc.setCapability(InternetExplorerDriver.ENABLE_PERSISTENT_HOVERING,false);
    dc.setCapability(InternetExplorerDriver.REQUIRE_WINDOW_FOCUS, false);
    dc.setCapability(InternetExplorerDriver.UNEXPECTED_ALERT_BEHAVIOR, true);
    dc.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
    dc.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true); 
    dc.setJavascriptEnabled(true);  
    
    WebDriver driver = new InternetExplorerDriver(dc);
    

Cela a fonctionné dans mon environnement s'il vous plaît poster ce qui a fonctionné pour vous


Remarque: après cela, j'ai expérimenté le pilote 64 bits. Si je faisais le (InternetExplorerDriver.REQUIRE_WINDOW_FOCUS, true), alors ça marche en quelque sorte. Au début, l'assertion échouait mais je pouvais utiliser la clé d'envoi sur la première page.

3
Shaun Cromie

Je l'ai corrigé en téléchargeant et en utilisant un fichier 32 bits. Le fil qui m'a aidé à résoudre

https://github.com/seleniumhq/Selenium-google-code-issue-archive/issues/5116

2

Meilleure solution:

Remarque: j'ai réinitialisé tous mes paramètres IE avant de procéder à cette solution. De plus, lors de ma première réponse, j'utilisais une version beaucoup plus ancienne du pilote IE.

  1. Téléchargez le dernier pilote IE - J'ai téléchargé la version 3.4 32 bits (le 64 bits était encore lent lorsque je l'ai testé) http: //Selenium-release.storage.googleapis .com/index.html? path = 3.4/

  2. Vous devrez modifier vos IE paramètres 2.1 Cliquez sur Outils -> Options Internet -> Sécurité. Réglez toutes les zones sur le même mode protégé, activé ou désactivé, n’a aucune importance. Comme ceci: http://seleniumquery.github.io/images/ie-driver-protected-mode-disable.png

  3. Maintenant, dans votre code, ajoutez ceci:

    public static void runInternetExplorer() {
    
    System.setProperty("webdriver.ie.driver", "C:\\Eclipse\\webdriver\\IE\\IEDriverServer.exe");
    
    WebDriver webDriver = new InternetExplorerDriver();
    new browser (webDriver);
    

    }

Quand je lance ça, ça fonctionne très bien. J'ai laissé ma réponse précédente si cette solution ne fonctionne pas.

1
Shaun Cromie

Une note pour Ruby et webdiriver version 3+

La documentation contient des exemples avec le paramètre native_events IE, même s'il est écrit dans la console au point de départ. 

En fait, le bon nom de paramètre est nativeEvent.

Définissez nativeEvent = false,
et webdriver utiliseront JS rapide au lieu d’une simulation de clic native lente.

0
Artru

J'ai travaillé sur IE11 avec la bibliothèque Selenium: Selenium-server-standalone-3.141.59.jar Et voici les constatations suivantes:

Sous Windows 10 version 64 bits IE 11 version 11.431.16299, version mise à jour 11.0.65 (KB4103765) Il fonctionne correctement avec IEDriverServer.exe (version 64 bits) Inutile. réglage supplémentaire sur la capacité. La période de saisie est acceptable (pour 6 caractères en 1 seconde)

Sous Windows 10 version 64 bits IE 11 version 11.15.16299.0 mise à jour la version 11.0.47 KB4040685 Cela fonctionne très lentement avec IEDriverServer.exe (version 64 bits) Pour entrer une valeur 6 chaîne de caractères, chaque caractère a besoin de 3-4 secondes pour être complété. Pour résoudre le problème, le codage suivant que j'ai testé fonctionne bien pour moi.

InternetExplorerOptions options = new InternetExplorerOptions();
options.setCapability(InternetExplorerDriver.REQUIRE_WINDOW_FOCUS, true);

Sous Windows 7 Professional version 32 bits IE 11 version 11.0.9600.18499, version mise à jour 11.0.36 (KB3191495) Il fonctionne correctement avec IEDriverServer.exe (version 32 bits). La période de saisie est acceptable. (6 caractères en une seconde) Aucun réglage supplémentaire requis.

0
admin

J'ai changé pour IEDriver 32 bits (à partir de 64 bits) a résolu ce problème pour moi. IE 11, Windows 7, Selenium 3.4.

0
Pichai Tangtrong

Dans IE11, la saisie des données dans les champs de texte (touche d'envoi) est trop lente lors de la relecture des tests.

Voici des informations sur les systèmes. IEDriver - 64 bits, OS - Windows7 64 bits, IE10 - 64 bits

Remarque: je suis confronté au même problème et mon problème a été résolu en réinstallant IEDriver - 32 bit , il fonctionne correctement avec le pilote IE 32 bits.

0
kavita

Internet Explorer 11 fonctionnait lentement sur une machine virtuelle Windows 8.1. J'utilisais IEDriverServer.exe 3.5.1.0 (x32), que je corrigais en passant à IEDriverServer.exe 3.5.1.0 (x64). Remarque: 3.4.0.0 ne résout pas ce problème. nativeEvents: false n'a rien changé. Le pilote est dans mon chemin, je ne sais pas ce qui se passe si ce n'est pas le cas.

0
BlazzedTroll

Note de publication v2.47.0.1:

  • Échec rapide activé pour la manipulation des cookies dans Internet Explorer. Le refactor de la gestion des cookies Pour le pilote IE introduit une incompatibilité avec les pilotes IE 64 bits et IE 10 et 11 s'exécutant sur 64- peu Windows. Comme c'est le cas avec L'envoi de frappes au clavier et la création de captures d'écran, une procédure de hook Windows est maintenant Utilisée pour obtenir et configurer les cookies dans IE. Cela signifie que dans IE 10 et 11 Sous Windows 64 bits, où le processus de rendu du contenu est toujours 32 bits, vous devez utiliser IEDriverServer.exe 32 bits afin de manipuler les cookies. Ce commit provoquera maintenant la levée d’exceptions si vous essayez de définir ou d’obtenir des cookies en utilisant le pilote 64 bits par rapport à un pilote 32 bits. version binaire de IE (ou vice-versa), mais cela affectera en particulier les utilisateurs qui essaieront par erreur d'utiliser l'exécutable 64 bits avec IE 10 ou 11 sous Windows 64 bits.

( https://raw.githubusercontent.com/SeleniumHQ/Selenium/master/cpp/iedriverserver/CHANGELOG )

Donc, vous devriez utiliser 32 bits ou le rendu du contenu doit être changé en 64 bits 

0
locika

Publication de cette solution pour les développeurs utilisant Python 3.6 et Selenium 3.14.

Dans mon cas, les paramètres IE appropriés sont verrouillés par la stratégie de groupe, de sorte que toute solution nécessitant une modification des paramètres IE est inutilisable.

Un seul paramètre d'option devait être modifié pour corriger les sendkeys lents dans mon environnement spécifique (Windows 7 x64, IE 11.0.9600 verrouillé, Python 3.6, Selenium 3.14.1):

from Selenium import webdriver
from Selenium.webdriver.ie.options import Options

opts = Options()
opts.require_window_focus = True

driver = webdriver.Ie(options=opts)
0
gb96