Frage

Wir laufen Selenium Regressionstests gegen unsere bestehende Code-Basis, und bestimmte Bildschirme in unseren Web-App Verwendung von Pop-ups für Zwischenschritte.

Zur Zeit verwenden wir die Befehle im Test:

// force new window to open at this point - so we can select it later
selenium().getEval("this.browserbot.getCurrentWindow().open('', 'enquiryPopup')");
selenium().click("//input[@value='Submit']");
selenium().waitForPopUp("enquiryPopup", getWaitTime());
selenium().selectWindow("enquiryPopup");

... das funktioniert die meiste Zeit . Gelegentlich wird der Test auf der waitForPopUp() Linie nicht mit

com.thoughtworks.selenium.SeleniumException: Permission denied

Kann jemand empfehlen, eine bessere, zuverlässig Methode?

Auch wir in erster Linie diese Tests auf IE6 und 7 ausgeführt werden.

War es hilfreich?

Lösung

Es funktioniert !! Nur um es einfacher für die Leute, die Selenese bevorzugen.

Das funktionierte für mich mit IE7 (Normalbetrieb).

Was für ein verdammter Streit. Vielen Dank, die Spaghetti-Monster in dem Himmel für SO oder es gibt keine Art, wie ich diese Arbeit in IE haben würde.

<tr>
    <td>getEval</td>
    <td>selenium.browserbot.getCurrentWindow().open('', 'windowName');</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>buttonName</td>
    <td></td>
</tr>
<tr>
    <td>windowFocus</td>
    <td>windowName</td>
    <td></td>
</tr>
<tr>
    <td>waitForPopUp</td>
    <td>windowName</td>
    <td>3000</td>
</tr>
<tr>
    <td>selectWindow</td>
    <td>windowName</td>
    <td></td>
</tr>

Andere Tipps

Wenn Sie in * iehta-Modus ausgeführt werden dann Sie in einige Pannen hier und da laufen gehen. Wir betreiben Selen in meinem Job und es scheint eine Menge Probleme mit IE und AJAX zu sein.

Doch es klingt wie das Problem, das Sie in laufen ist eine, wo Selen eine Komponente in einem anderen Fenster zuzugreifen versuchen, bevor es vollständig geladen werden. Ich bin nicht sicher, was Ihr Standard-Timeout-Bereich eingestellt ist, aber Sie können versuchen, es auf 60 zu erhöhen (60000ms) Sekunden oder so hinter dem Problem zu erhalten.

Anders als das würde ich Ihre Tests in Firefox vorschlagen laufen (mit * Chrom), da es viel zuverlässigere Ergebnisse produziert, aber manchmal ist es einfach nicht möglich, da Geschäftsanforderungen.

Ich trialled nur das Hinzufügen eines weiteren Selen Funktion, windowFocus():

// force new window to open at this point - so we can select it later
selenium().getEval("this.browserbot.getCurrentWindow().open('', 'enquiryPopup')");
selenium().click("//input[@value='Submit']");
selenium().windowFocus("enquiryPopup");
selenium().waitForPopUp("enquiryPopup", getWaitTime());
selenium().selectWindow("enquiryPopup");

Der Test gelang es, als ich es vor Ort lief, aber nur mit denen alle Methodenaufrufe - create / Fokus / wait / select.

Ich bin über die Build-Server laufen alle Tests zu lassen, und wenn das auch gelingt, werde ich eine Bibliotheksfunktion aus ihm werden, machen ...!

Ich brauchte ein iframe in einem Popup-Fenster auswählen und ein Formular ausfüllen. Ich hatte Mühe, die selectWindow cmd mit dem Selen nicht meine iframe finden konnte, so dass ich entfernt den Befehl aus.

Dieses Selenese funktionierte gut für mich (wo der iframe Titel und id = account_frame):

<tr>
  <td>click</td>
  <td>//a[@class='item_add']</td>
  <td></td>
</tr>
<tr>
  <td>windowFocus</td>
  <td>account_frame</td>
  <td></td>
</tr>
<tr>
  <td>waitForPopUp</td>
  <td>account_frame</td>
  <td>10000</td>
</tr>

Versuchen Sie, einige Warte Aussagen rund um die Anrufe hinzufügen, die Sie Probleme verursachen.

Ich habe die gleichen Fehler hat, bevor und der einzige Weg, ich war in der Lage zu zuverlässig löst sie war durch Anrufe System.Threading.Thread.Sleep (5000) machen ..

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top