Pergunta

Estamos executando testes de regressão selênio contra a nossa base de código existente, e certas telas em nossas web usar o App pop-ups para as etapas intermediárias.

Atualmente nós usamos os comandos no teste:

// 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 na maioria das vezes . Ocasionalmente, o teste irá falhar na linha waitForPopUp() com

com.thoughtworks.selenium.SeleniumException: Permission denied

Alguém pode sugerir uma melhor, mais confiável método?

Além disso, corremos principalmente estes testes no IE6 e 7.

Foi útil?

Solução

Ele funciona !! Apenas para tornar mais fácil para as pessoas que preferem Selenese.

Isso funcionou para mim usando o IE7 (modo normal).

O que um aborrecimento em pânico. Obrigado o monstro de espaguete no céu por SO ou não há nenhuma maneira que eu teria conseguido este trabalho no 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>

Outras dicas

Se você estiver executando no modo iehta * então você vai se deparar com algumas falhas aqui e ali. Corremos selênio no meu trabalho e parece haver muitos problemas com IE e AJAX.

No entanto, parece que o problema que você está correndo em é aquele em que o selênio está tentando acessar um componente em outra janela antes que ele completamente carrega. Não estou certo de que sua faixa de tempo limite padrão é definido como, mas você pode querer tentar aumentar para 60 (60000ms) segundos ou mais para superar o problema.

Outros, que eu sugeriria executando seus testes no Firefox (usando cromo *) uma vez que produz muito mais confiável resultados, mas às vezes ele simplesmente não é possível devido a requisitos de negócios.

Eu só testado adicionando outra função selênio, 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");

O teste bem sucedido quando eu corri-lo localmente, mas só com todas aquelas chamadas de método - criar / foco / wait / selecionar.

Estou prestes a deixar o servidor de compilação executar todos os testes, e se isso sucede também, eu vou estar fazendo uma função de biblioteca de fora ...!

Eu precisava selecionar um iframe dentro de uma janela pop-up e preencher um formulário. Eu tive problemas para usar o cmd selectWindow onde selênio não conseguia encontrar o meu iframe, assim que eu removi o comando.

Esta Selenese funcionou bem para mim (onde o título 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>

Tente adicionar algumas declarações de espera em torno das chamadas que estão a causar-lhe problemas.

Eu tive os mesmos erros antes e a única maneira que eu era capaz de confiável resolvê-los foi fazendo chamadas para System.Threading.Thread.Sleep (5000) ..

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top