[JAVA] Zusammenfassung der Probleme und Gegenmaßnahmen beim Betrieb des IE mit WebDriver of Selenium2

Ich habe Selen eingeführt, weil das Team vor Ort, für das ich abgeordnet wurde, manuell Testdaten auf dem Bildschirm erstellt hat. Da das System, für das ich verantwortlich bin, nur mit IE funktioniert, mache ich keine Testfälle mit IDE Ich habe den Fall mit Java mit WebDriver implementiert und den Browser bedient. Es dient auch als Memorandum und fasst Probleme und Verwendung zusammen.

Umgebung

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

Aufbau

  1. Erstellen Sie ein neues Maven-Projekt mit Eclipse Aktivieren Sie beim Erstellen "Einfaches Projekt erstellen"

  2. Ändern Sie pom.xml

pom.XML-Auszug


<dependencies>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>2.53.1</version>
    </dependency>
</dependencies>
  1. Laden Sie IEDriverServer herunter Von hier
  1. Zur Java-Implementierung Sie müssenProperty den Pfad von DriverServier festlegen, der in 3 erhalten wurde.

So schreiben Sie IEDriver-Grundeinstellungen


System.setProperty("webdriver.ie.driver","C:\\Jeder Ort\\IEDriverServer.exe");
WebDriver driver = new InternetExplorerDriver();
Hier finden Sie eine Referenz zur Verwendung des Treibers

Problem und Antwort

1. Selen-Startfehler

python


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

IE Browser Einstellungen für die Registerkarte Internetoptionen → Registerkarte Sicherheit → Stellen Sie den Schutzmodus für alle Zonen gleich ein

2. sendKeys ist sehr langsam

Sendkeys zum Eingeben von Text in den Browser sind ungewöhnlich langsam zu verwenden Ich habe die detaillierte Ursache nicht untersucht, aber es scheint der Fall zu sein, wenn die 64-Bit-Version von IEDriverServer verwendet wird.

3. Zündet nicht, auch wenn geklickt wird

Es scheint gelegentlich im IE aufzutreten. Ich konnte es mit der folgenden Beschreibung vermeiden.

python


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

4. Beenden Sie den Vorgang, wenn das Popup zum Herunterladen von Dateien angezeigt wird

Popup (Benachrichtigungsleiste), das beim Herunterladen einer Datei mit IE angezeigt wird In diesem Fall stoppt Selen. Es funktioniert nicht, auch wenn ich manuell darauf klicke. Mit IE11 konnte ich die Einstellungen im Browser nicht ändern. Erstellen Sie daher einen untergeordneten Thread und überlassen Sie den Download-Vorgang dem. Der übergeordnete Thread arbeitet hart daran, die Hauptverarbeitung am Laufen zu halten.

Tips

Ich möchte den untergeordneten Bildschirm des Browsers bedienen

Wenn der übergeordnete Bildschirm einen untergeordneten Bildschirm in JS erstellt Vorgehensweise, wenn Sie sich auf den Unterbildschirm konzentrieren und ihn bedienen möchten.

python


//Halten Sie die Informationen zum übergeordneten Fenster
String currentHandle = driver.getWindowHandle();

//Schalten Sie den Fokus auf das untergeordnete Fenster
Set<String> windowHandles = driver.getWindowHandles();
  for (String handle : windowHandles) {
    if (!handle.equals(currentHandle)) {
      driver.switchTo().window(handle);
    }
}

//Kehren Sie zum übergeordneten Fenster zurück, wenn die Verarbeitung des untergeordneten Fensters abgeschlossen ist
driver.switchTo().window(currentHandle);

Ich möchte warten, bis der Browser die Verarbeitung beendet hat

Nachdem ich eine Operation mit Selen bestellt habe, möchte ich warten, bis sie abgeschlossen ist. Nach der Suche möchte ich beispielsweise den folgenden Vorgang ausführen, nachdem die Suche abgeschlossen ist und die Liste angezeigt wird. Die folgenden Quellen warten darauf, dass ein Element mit einer ID-Liste auf dem Bildschirm angezeigt wird. Das Zeitlimit beträgt 10 Sekunden und eine Ausnahme tritt auf, wenn es überschritten wird.

python


//Standby-Objekt
WebDriverWait wait = new WebDriverWait(driver, 10);

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

Ich möchte eine Datei hochladen

python


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

Verweise

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

Zusammenfassung der Probleme und Gegenmaßnahmen beim Betrieb des IE mit WebDriver of Selenium2
Zusammenfassung der Probleme und Gegenmaßnahmen beim Betrieb des IE mit WebDriver of Selenium2
Lesen Sie die xlsx-Datei in Java mit Selenium
Führen Sie Edge (Chromium-Version) auf einem Mac mit Selen aus
Zusammenfassung des ToString-Verhaltens mit Java- und Groovy-Annotationen
Zusammenfassung der Verwendung des im IE festgelegten Proxy-Sets bei der Verbindung mit Java
Zusammenfassung dessen, was wir getan haben, um JavaScript mit IE11 kompatibel zu machen
[JVM] Zusammenfassung beim Stolpern mit jstat
Zusammenfassung der Mittel, wenn Sie mit HTTP unter Android kommunizieren möchten