2017-03-23 4 views
-1

Ich teste die Website-Funktionalität mit Selenium mit Java von Eclipse. Ein Test besteht darin, auf einen "Download" -Knopf zu klicken, nach einem Popup-Fenster zu suchen (dies ist ein anderes Selenium-Fenster), auf dieses Fenster zu reagieren, was dann dazu führen sollte, dass ein Windows-Download-Dialog erscheint (siehe angehängtes Bild).Zugriff auf Windows-Dialogfelder von Selenium und Java

Bitte beachten Sie. Ich muss die Datei nicht wirklich herunterladen. Überprüfen Sie, dass der Windows-Dialog erscheint.

Ich weiß aus Erfahrung (oder zumindest nicht bewusst), dass Selen tatsächlich auf die Windows-Download-Box zugreifen kann, wählen Sie einen Speicherort und starten Sie den Download. Aber alles, was ich tun muss, ist zu überprüfen, dass die Download-Box aufgetaucht ist. Wenn Sie den Chrom-Treiber verlassen, wird das Download-Fenster gelöscht, so dass es nicht verweilt, aber ich muss noch überprüfen, ob es erstellt wurde.

Irgendwelche Vorschläge? Eine Sache, die ich ausprobierte, war, den Task-Manager geöffnet zu haben. Ich dachte, ich könnte einen Prozess finden, der dem Dialogfeld entspricht, aber es gab 119 Prozesse, bevor das Dialogfeld aufkam und als es abgelaufen war. Also irgendwelche Vorschläge was zu tun ist?

Ich könnte als beiseite hinzufügen, dass jemand eine Problemumgehung geschrieben, um die Datei tatsächlich herunterzuladen. Anstatt auf eine Schaltfläche oder einen Link zu klicken, gab er vor, das Windows-Dialogfeld zu sein, und akzeptierte den Download. Das wird aus den oben genannten Gründen in diesem Fall nicht funktionieren, da ich die tatsächlichen Ergebnisse des Klickens auf die Schaltfläche überprüfen muss.

In meinem angehängten Bild finden Sie ein Beispiel für das Dialogfeld. enter image description here

+0

Bitte zeigen Sie Code, den Sie versuchten? – Rao

+0

Nicht sicher, was du meinst? Ich habe gerade keinen Code. Versuche herauszufinden, wie es geht. Bevor ich eine Automatisierung schreibe, prüfe ich sie immer zuerst manuell. Das ist soweit ich gekommen bin. Als ich erwähnte, dass der Task-Manager geöffnet war, war es, als ich den Test manuell ausführte ;-) – Tony

+0

Nur die Art und Weise, wie Fenster-Dialogfelder behandelt werden, verwenden die AutoIT- oder Robot-Klasse. – kushal

Antwort

0

Eine Problemumgehung, um diese Testanforderung zu erfüllen, ist, sobald Sie auf das Fenster reagieren, das zu einem Windows-Downloaddialog führt, versuchen Sie die nächste Aktion auszuführen. Dies führt zu einer WebDriverException, da der Zugriff auf die Benutzeroberfläche vom Windows-Dialogfeld blockiert wird. Sie können dann diese WebDriverException abfangen und im Catch-Block die Escape-Taste mit der Robot Klasse in Java drücken. Es folgt ein Beispiel:

try { 
    //1) Respond to the window that results in Windows dialog box. 
    //2) Perform the next action on UI. 
} catch (WebDriverException we) { 
    //3) You can capture screen shot as well at this stage. 
    System.out.println("Most likely Windows dialog appeared."); 
    //4) Press escape key using Robot class in Java 
    Robot r = new Robot(); 
    r.keyPress(KeyEvent.VK_ESCAPE); 
} 
+0

Ich werde das versuchen. Vielen Dank. – Tony

0

Sie können AutoIT verwenden zu überprüfen, ob das Windows-Fenster erscheint, dann den Status der Fenster speichern irgendwo Dialog, dann lesen Sie den Status der Fenster (zB eine temporäre Datei.) Dialog mit Java von Eclipse

+0

Ich weiß, dass wir früher Auto IT für etwas benutzt haben, aber es war verpönt. Ich denke, dass es von Jenkins nicht funktioniert. Sie haben sich auch Test Complete angesehen, aber ich weiß nicht, wie das funktioniert. – Tony