[JAVA] Résumé des problèmes et des contre-mesures lors de l'utilisation d'IE avec WebDriver de Selenium2

J'ai présenté Selenium parce que l'équipe sur site que j'ai été détachée pour créer manuellement des données de test à l'écran. Étant donné que le système dont je suis en charge ne fonctionne qu'avec IE, je ne fais pas de cas de test avec IDE J'ai implémenté le cas avec java en utilisant WebDriver et j'ai utilisé le navigateur. Il sert également de mémorandum et résume les problèmes et l'utilisation.

environnement

windows10 64bit IE11 java 1.8.0_121 eclipse Neon.2 Release (4.6.2) selenium 2.53.1

Réglage

  1. Créez un nouveau projet maven avec eclipse Cochez "Créer un projet simple" lors de la création

  2. Modifiez pom.xml

pom.extrait xml


<dependencies>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>2.53.1</version>
    </dependency>
</dependencies>
  1. Téléchargez IEDriverServer D'ici
  1. Vers l'implémentation Java Vous devez définirProperty le chemin de DriverServier obtenu en 3.

Comment écrire les paramètres initiaux d'IEDriver


System.setProperty("webdriver.ie.driver","C:\\N'importe où\\IEDriverServer.exe");
WebDriver driver = new InternetExplorerDriver();
Voici une référence pour savoir comment utiliser le pilote

Problème et réponse

1. Erreur de démarrage de Selenium

python


Unexpected error launching Internet Explorer. 
Protected Mode must be set to the same value (enabled or disabled) for all zones.

Navigateur IE Options Internet → Paramètres de l'onglet Sécurité → Faites le même réglage du mode de protection pour toutes

2. sendKeys est très lent

Les touches d'envoi pour saisir du texte dans le navigateur sont anormalement lentes à utiliser Je n'ai pas étudié la cause détaillée, mais cela semble être le cas lors de l'utilisation de la version 64 bits d'IEDriverServer.

3. Ne s'enflamme pas même si vous cliquez dessus

Cela semble se produire occasionnellement dans IE. J'ai pu l'éviter avec la description suivante.

python


WebElement element = driver.findElement(clickTarget);
element.sendKeys(Keys.CONTROL);
element.click();
Ou
new Actions(driver).click(element).build().perform();

4. Arrêtez lorsque la fenêtre contextuelle de téléchargement de fichier apparaît

Pop-up (barre de notification) qui apparaît lors du téléchargement d'un fichier avec IE Lorsque cela se produit, le sélénium s'arrêtera. Cela ne fonctionne pas même si je clique dessus manuellement. Avec IE11, je ne pouvais pas modifier les paramètres du navigateur. Par conséquent, créez un thread enfant et laissez le processus de téléchargement à cela. Le thread parent travaille dur pour maintenir le traitement principal en cours.

Tips

Je souhaite utiliser l'écran enfant du navigateur

Lorsque l'écran parent crée un écran enfant dans JS Comment faire lorsque vous souhaitez vous concentrer sur l'écran secondaire et l'utiliser.

python


//Conserver les informations de la fenêtre parent
String currentHandle = driver.getWindowHandle();

//Basculer le focus sur la fenêtre enfant
Set<String> windowHandles = driver.getWindowHandles();
  for (String handle : windowHandles) {
    if (!handle.equals(currentHandle)) {
      driver.switchTo().window(handle);
    }
}

//Revenir au parent lorsque le traitement de la fenêtre enfant est terminé
driver.switchTo().window(currentHandle);

Je veux attendre que le navigateur termine le traitement

Après avoir commandé une opération avec Selenium, je veux attendre qu'elle se termine. Par exemple, après la recherche, je souhaite effectuer l'opération suivante une fois la recherche terminée et la liste apparaît. Les sources suivantes attendent qu'un élément avec une liste d'identifiants apparaisse à l'écran. Le délai est de 10 secondes et une exception se produit lorsqu'il est dépassé.

python


//Objet en veille
WebDriverWait wait = new WebDriverWait(driver, 10);

wait.until(
  ExpectedConditions.presenceOfElementLocated(
    By.id("list")
  )
);

Je veux télécharger un fichier

python


WebElement element = driver.findElement(By.xpath("//input[@type='file']"));
element.sendKeys("./Fichier.txt");

Les références

https://donow.jp/skillup/?p=776#i-7 http://qiita.com/tukiyo3/items/44f5b64cf222d9da1b5b http://bokuibi.blogspot.jp/2012/05/selenium-2.html http://qiita.com/nkns165/items/53d1afc17023d9ae3ebd

Recommended Posts

Résumé des problèmes et des contre-mesures lors de l'utilisation d'IE avec WebDriver de Selenium2
Résumé des problèmes et des contre-mesures lors de l'utilisation d'IE avec WebDriver de Selenium2
Lire le fichier xlsx en Java avec Selenium
Run Edge (version Chromium) sur Mac avec Selenium
Résumé du comportement de ToString avec les annotations Java et Groovy
Résumé de l'utilisation du jeu de proxy dans IE lors de la connexion avec Java
Résumé de ce que nous avons fait pour rendre JavaScript compatible avec IE11
[JVM] Résumé en cas de trébuchement avec jstat
Résumé des moyens lorsque vous souhaitez communiquer avec HTTP sur Android