Pregunta

Estamos ejecutando pruebas de regresión de Selenium con nuestra base de código existente y ciertas pantallas de nuestra aplicación web utilizan ventanas emergentes para pasos intermedios.

Actualmente usamos los comandos en la prueba:

// 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");

...que funciona la mayor parte del tiempo.Ocasionalmente la prueba fallará en el waitForPopUp() linea con

com.thoughtworks.selenium.SeleniumException: Permission denied

¿Alguien puede sugerir una mejor y más confiable ¿método?

Además, ejecutamos estas pruebas principalmente en IE6 y 7.

¿Fue útil?

Solución

¡¡Funciona!!Sólo para hacerlo más fácil para las personas que prefieren selenese.

Esto funcionó para mí usando IE7 (modo normal).

Qué maldita molestia.Gracias al monstruo de espagueti en el cielo por SO o no habría manera de que esto funcionara en 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>

Otros consejos

Si está ejecutando en modo *iehta, encontrará algunos fallos aquí y allá.Ejecutamos Selenium en mi trabajo y parece haber muchos problemas con IE y AJAX.

Sin embargo, parece que el problema con el que se encuentra es uno en el que Selenium intenta acceder a un componente en otra ventana antes de que se cargue por completo.No estoy seguro de cuál es su rango de tiempo de espera predeterminado, pero es posible que desee intentar aumentarlo a 60 (60000 ms) segundos aproximadamente para solucionar el problema.

Aparte de eso, sugeriría ejecutar sus pruebas en Firefox (usando *chrome), ya que produce resultados mucho más confiables, pero a veces simplemente no es posible debido a requisitos comerciales.

Acabo de intentar agregar otra función de 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");

La prueba tuvo éxito cuando la ejecuté localmente, pero solo con todas esas llamadas a métodos: crear/enfocar/esperar/seleccionar.

Estoy a punto de dejar que el servidor de compilación ejecute todas las pruebas, y si eso también tiene éxito, ¡haré una función de biblioteca a partir de ello...!

Necesitaba seleccionar un iframe dentro de una ventana emergente y completar un formulario.Tuve problemas para usar el cmd selectWindow donde selenium no pudo encontrar mi iframe, así que eliminé el comando.

Este selenese funcionó bien para mí (donde el título del iframe y el 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>

Intente agregar algunas declaraciones de espera en torno a las llamadas que le están causando problemas.

He tenido los mismos errores antes y la única manera que pude seguramente resolverlos fue haciendo llamadas a System.Threading.Thread.Sleep(5000)..

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top