Domanda

Stiamo eseguendo test di regressione del selenio rispetto alla nostra base di codice esistente e alcune schermate nella nostra app Web utilizzano popup per i passaggi intermedi.

Attualmente utilizziamo i comandi nel 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");

...che funziona La maggior parte delle volte.Occasionalmente il test fallirà sul waitForPopUp() coincide

com.thoughtworks.selenium.SeleniumException: Permission denied

Qualcuno può suggerire qualcosa di meglio, di più affidabile metodo?

Inoltre, eseguiamo questi test principalmente su IE6 e 7.

È stato utile?

Soluzione

Funziona!!Giusto per rendere le cose più facili per chi preferisce il selenese.

Questo ha funzionato per me utilizzando IE7 (modalità normale).

Che dannata seccatura.Ringrazia il mostro degli spaghetti nel cielo per SO o non avrei potuto farlo funzionare in IE.

<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>

Altri suggerimenti

Se stai utilizzando la modalità *iehta, ti imbatterai in alcuni problemi qua e là.Utilizziamo Selenium nel mio lavoro e sembrano esserci molti problemi con IE e AJAX.

Tuttavia, sembra che il problema che stai riscontrando riguardi il fatto che Selenium tenta di accedere a un componente in un'altra finestra prima che si carichi completamente.Non sono sicuro su quale sia impostato l'intervallo di timeout predefinito, ma potresti provare ad aumentarlo a 60 (60000 ms) circa per superare il problema.

Oltre a ciò, suggerirei di eseguire i test in Firefox (utilizzando *chrome) poiché produce risultati molto più affidabili, ma a volte semplicemente non è possibile a causa dei requisiti aziendali.

Ho appena provato ad aggiungere un'altra funzione del selenio, 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");

Il test ha avuto esito positivo quando l'ho eseguito localmente, ma solo con tutte quelle chiamate al metodo: crea/focus/attendi/seleziona.

Sto per lasciare che il server di compilazione esegua tutti i test e, se anche questo riesce, ne trarrò una funzione di libreria...!

Avevo bisogno di selezionare un iframe all'interno di una finestra popup e compilare un modulo.Ho avuto problemi con l'utilizzo del cmd selectWindow in cui selenium non è riuscito a trovare il mio iframe, quindi ho rimosso il comando.

Questo selenese ha funzionato bene per me (dove il titolo iframe e 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>

Prova ad aggiungere alcune dichiarazioni di attesa alle chiamate che ti causano problemi.

Ho avuto gli stessi errori prima e l'unico modo in cui sono riuscito a farlo in modo affidabile risolverli è stato effettuare chiamate a System.Threading.Thread.Sleep(5000)..

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top