Selenium é um projeto de software livre sem orientação formal, o que faz da investigação de problemas um processo demorado para os testadores. Este artigo fornece a boa prática para problemas comuns durante o teste baseado no Selenium 1.0, liberado em junho de 2009.

Peng Cheng Yu, Software Testing Engineer, IBM

Peng YuPeng Cheng Yu é engenheiro de software do IBM China Development Lab. No trabalho como líder de testes de vários projetos de globalização, ele obteve experiência em testes agile, garantia de qualidade e automação de teste.



Zhang Chao Chao , Software Engineer, IBM

Chao Chao ZhangZhang Chao Chao é engenheira de teste de software do IBM China Development Lab. Ela tem experiência em testes agile e automação de testes.



22/Jul/2011

Introdução

Selenium é um conjunto robusto de ferramentas com suporte a desenvolvimento agile de automação de teste para aplicativos baseados na Web entre muitas plataformas. É uma ferramenta de automação de software livre e leve que pode ser facilmente integrada em vários projetos, em apoio a diversas linguagens de programação, como .NET, Perl, Python, Ruby e Java™ .


Teste de aplicativo Ajax com Selenium

Asynchronous JavaScript and XML (Ajax) é uma técnica de desenvolvimento para a criação de aplicativos da Web interativos. Uma característica de um aplicativo Ajax é que ele não faz uma página ser recarregada todas as vezes. Em vez disso, o navegador terá uma chamada assíncrona para o servidor a fim de obter os dados e atualizar apenas partes específicas da página atual. Para aumentar a interatividade da página da Web, velocidade de resposta e usabilidade, são necessárias algumas mudanças ao testar aplicativos Ajax.

Primeiro trabalhamos na página da Web e depois aguardamos até que a chamada assíncrona seja concluída. Após a conclusão, a verificação pode continuar. Nesse ponto, surge a questão do tempo de espera adequado.

Uma opção é simplesmente pausar por um tempo determinado no aplicativo de teste, o que deve funcionar na maioria dos casos. Em algumas circunstâncias, como rendimento lento de rede, a chamada Ajax não é concluída após pausar por um tempo específico e resulta em falha nas etapas de teste. Por outro lado, se o tempo de pausa for longo demais, tornará o teste inaceitavelmente lento.

O Selenium forneceu modos mais eficientes de lidar com a espera. Uma possibilidade é usar a classe com.thoughtworks.selenium.Wait para aguardar um elemento ou texto ser mostrado ou desaparecer da página. A condição de quebra pode ser definida para a espera na função until() , ou a classe Wait pode ser estendida para implementação. A Listagem 1 é o código de amostra para o uso da classe Wait . Ela parará de esperar se a condição for preenchida, ou retornará uma exceção de tempo de espera se ultrapassar o tempo de espera máximo.

Listagem 1. Espera pelo elemento ou texto ser apresentado
  Wait wait = new Wait() {
	public boolean until() {
	return selenium.isElementPresent(locator);
	// or selenium.isTextPresent(pattern);
	}
  };
  wait.wait("", timeoutInMilliseconds);

Outra opção é usar a função waitForCondition do Selenium, para a qual será passado um fragmento de JavaScript como parâmetro. Quando o Selenium detecta que condição retorna um valor verdadeiro, ele para de esperar. É possível aguardar que um elemento ou texto seja apresentado ou não. O JavaScript pode ser executado na janela de aplicativo obtida pela função Selenium.browser.getCurrentWindow(). A Listagem 2 é o código de amostra para verificar o estado da janela. Ele funciona apenas em Firefox.

Listagem 2. Esperar o estado da janela estar pronto
String script = "var my_window = selenium.browserbot.getCurrentWindow();" 
script += "var bool;";
  script += "var readyState = (my_window.document.readyState);";
  script += "if (readyState == 'complete'){";
  script += "bool = 'true';";
  script += "}";
  script += "bool;";
  selenium.waitForCondition(script, timeoutInMilliseconds);

Como oferecer suporte a aplicativos Dojo

Dojo é um kit de ferramentas JavaScript muito usado para construir interfaces dinâmicas da Web. Um ponto principal ao usar o Selenium para testar aplicativos Dojo é reconhecer os widgets Dojo e gravar suas ações. Widgets Dojo definidos pelo autor estão no nível abstrato. Quando a página está em execução, ela converte widgets Dojo em código HTML básico. Há muitos códigos HTML gerados automaticamente por Dojo, assim o reconhecimento de widgets Dojo pode ter algumas diferença em relação a widgets HTML tradicionais.

As ações executadas em widgets Dojo, incluindo campo de texto, botão, caixa de opção e botão de opções, podem se comportar da mesma maneira dos widgets HTML. Na caixa de combinação, porém, o seletor de data e outros widgets adicionais fornecidos pelo Dojo podem exigir manipulação específica.

Figura 1. Caixa de combinação Dojo
Caixa de combinação Dojo

Use o IDE Selenium para registrar a ação selecionada na caixa de combinação fornecida na Figura 1. Clique na seta para baixo e aparecerá uma lista suspensa. Selecione o terceiro item Stack(SWG). Os scripts registrados são mostrados na Figura 2.

Figura 2. Os scripts registrados pelo IDE Selenium
Os scripts registrados pelo IDE Selenium

Às vezes, apenas a segunda linha dos scripts será gerada pelo IDE. Nesse caso, inclua a ação de clicar no botão de seta. Para os scripts acima, se a primeira linha for reproduzida, ela deve gerar a lista suspensa. Mas não faz nada. Clicar na verdade não executa a ação de clicar em diversos widgets Dojo. Altere click(locator) para clickAt(locator, coordString)ou MouseDown(locator) e MouseUp(locator).

O tempo de espera deve ser incluído na lista suspensa. Como os scripts mostrados na Figura 2, a ação de clicar no item selecionado será executada logo após o clique no botão de seta para baixo. Provavelmente falhará porque a lista suspensa não apareceu. Basta incluir um comando pause ou usar o comando waitFor para aguardar o elemento de item aparecer e continuar no próximo comando.

Os scripts modificados que vão automatizar a seleção na caixa de combinação Dojo são mostrados na Figura 3.

Figura 3. Scripts IDE a selecionar na caixa de combinação Dojo após a modificação
Scripts IDE a selecionar na caixa de combinação Dojo após a modificação

Os códigos em RC são mostrados na Listagem 3.

Listagem 3. Códigos RC para automatizar a seleção na caixa de combinação Dojo
  selenium.clickAt("//div[@id='widget_offeringType']/div/div",””);
  selenium.waitForCondition("selenium.isElementPresent(\"offeringType_popup2\")", "2000");
  selenium.clickAt("offeringType_popup2",””);
Figura 4. Seletor de data
Seletor de data

Para o exemplo de seletor de data na Figura 4, as ações executadas talvez não sejam registradas pelo IDE. Escreva os códigos RC como mostra a Listagem 4.

Listagem 4. Códigos RC para automatizar a seleção
//click on the date field by id you defined;
selenium.clickAt("dateBox",""); 
//wait for the drop down date box by id;
selenium.waitForCondition("selenium.isElementPresent(\"widget_dateBox_dropdown\")", \
"2000"); 
//click previous year 2008;
selenium.clickAt("//span[contains(@class,'dijitCalendarPreviousYear')]", "");
//click on the month increase; 
//previous month would contains  ‘dijitCalendarIncrease’.
selenium.clickAt("//img[contains(@class,'dijitCalendarIncrease')]","");
//click on the date such as 28 of current month; If you do not specify 
//the td with the attribute of current month class, it will click \
on the //first 28 of previous month;
selenium.click("//td[contains(@class,'dijitCalendarCurrentMonth')]/span[text()='28']");

Comoo mostra o exemplo, os aplicativos Dojo não podem ser testados por registro IDE simples. Provavelmente, esses scripts não conseguirão passar. Pode haver algumas ações ausentes, ou as ações não funcionam. Os scripts devem ser ajustados para fazer com que sejam executados suavemente em IDE e RC. No caso de widgets Dojo complexos, uma solução possível é usar a função runScript(String) , visto que o Selenium fornece bom suporte a JavaScript. A Listagem 5 fornece uma instrução JavaScript para simular a seleção da caixa de combinação.

Listagem 5. Executar instruções JavaScript para selecionar na caixa de combinação
selenium.runScript("dijit.byId(\"offeringType\").setValue(\"Stack(SWG)");");

Como criar testes Selenium com Ant

As ferramentas de integração, como Ant, são convenientes para criar testes Selenium e executar etapas de teste suavemente sem iniciar o servidor Selenium independente. Se o teste Selenium for acionado por TestNG, defina a tarefa Ant TestNG como mostrado na Listagem 6. Na Listagem 6, classpath supostamente é o caminho do arquivo TestNG.jar.

Listagem 6. Tarefa Ant TestNG
<taskdef resource="testngtasks" classpath="testng.jar"/>       

A meta principal é iniciar o servidor, executar os testes e depois parar o servidor. Essas tarefas são implementadas na sequência definida em bulid.xml na Listagem 7.

Listagem 7. Tarefa Ant para iniciar o servidor, executar as etapas de teste e parar o servidor
<target name="run_test" description="start,run and stop" depends="dist">
<parallel>
 <antcall target="start-server" /> 
<sequential>
 <echo taskname="waitfor" message="Waitforproxy server launch" /> 
 <waitfor maxwait="2" maxwaitunit="minute" checkevery="100">
 <http url="http://localhost:4444/selenium-server/driver/?cmd=testComplete" /> 
 </waitfor>
 <antcall target="runTestNG" /> 
 <antcall target="stop-server" /> 
 </sequential>
 </parallel>
 </target>

É preferível usar a tarefa waitfor para testar se o servidor Selenium foi iniciado com sucesso, em vez de pausar por um tempo fixo. Se a URL http://localhost:4444/selenium-server/driver/?cmd=testComplete estiver disponível, isso significa que o Selenium foi ativado com sucesso. Na Listagem 7, ele aguarda até dois minutos e verifica a cada 100 milissegundos o servidor Selenium no host local para entregar a URL completa.

Os detalhes da tarefa start-server são definidos na Listagem 8. O local do modelo do perfil do Firefox e outros argumentos podem ser especificados na tag <arg>.

Listagem 8. Tarefa Ant para iniciar o servidor em detalhes
<target name="start-server">
<java jar="lib/selenium-server.jar" fork="true">
 <arg line="-firefoxProfileTemplate ${selenium}/profile/" /> 
 </java>
 </target>

Os detalhes da tarefa runTestNG são definidos na Listagem 9. Os atributos usados costumeiramente para a tarefa testng incluem outputDir e xmlfileset. O atributo outputDir é usado para configurar o local de relatório de saída. O atributo xmlfileset é usado para incluir os arquivos XML de inicialização. Consulte o site formal TestNG para obter mais opções.

Listagem 9. Tarefa Ant para executar etapas de teste
<target name="runTestNG">
<testng outputDir="${testng.report.dir}" sourcedir="${build}" 
classpathref="run.cp" haltOnfailure="true">
 <xmlfileset dir="${build}" includes="testng.xml" /> 
 </testng>
 </target>

Os detalhes da tarefa stop-server são definidos na Listagem 10.

Listagem 10. Tarefa Ant para parar o servidor Selenium
<target name="stop-server">
 <get taskname="selenium-shutdown" 
src="http://localhost:4444/selenium-server/driver/?cmd=shutDown" ignoreerrors="true" /> 
 <echo taskname="selenium-shutdown" message=" Errors during shutdown are expected" /> 
 </target>

As tarefas principais estão alistadas acima. Combine-as ao seu arquivo de construção para fazer testes bem-integrados com Ant.


Como oferecer suporte a testes de Web sites HTTPS

À medida que a Internet enfatiza mais a segurança das informações, mais aplicativos da Web usam a autenticação SSL. O IDE Selenium suporta o HTTPS por padrão, mas o RC Selenium não. A solução varia no Internet Explorer e no Firefox.

Para o IE, instale um certificado na pasta de suporte a SSL no diretório de configuração. Use o modo de execução *iehta se a versão em uso for anterior ao Selenium-RC 1.0 beta 2, e o modo de execução *iexplore para o Selenium-RC 1.0 beta 2 ou posterior.

Se aparecer um aviso de segurança ao testar um Web site HTTPS como mostrado abaixo, clique em View Certificate e instale o certificado do Web site HTTPS. Se o aviso continuar a aparecer, analise e configuração do IE. Abra Tool > Internet Options > Advancede desmarque Warn about invalid site certificates e Check for publisher's certificate revocation na categoria de segurança.

Figura 5. Aviso de segurança ao testar Web sites HTTPS
Aviso de segurança ao testar Web sites HTTPS

Criando um perfil do Firefox

Para o Firefox, execute as etapas abaixo para criar um perfil customizado, depois reinicie o servidor:

  1. Feche todas as instâncias do Firefox em execução.
  2. Inicie o Firefox com o gerenciador de perfil: firefox -ProfileManager.
  3. Crie um perfil. Quando lhe for solicitado, escolha um diretório para o perfil. Coloque-o dentro da pasta de projeto.
  4. Selecione o perfil e execute o Firefox.
  5. Navegue até a URL HTTPS com o certificado autoassinado contra o qual será feito o teste.  Aceite o certificado quando solicitado. Isso criará uma exceção no perfil.
  6. Feche o navegador.
  7. Acesse o diretório de perfil do Firefox.
  8. Exclua tudo no diretório, exceto os arquivos cert_override.txt e cert8.db .

Por padrão, o Selenium criará um perfil ao ativar a instância do Firefox. Quando iniciar o servidor com o parâmetro -firefoxProfileTemplate /path/to/profile/dir, o Selenium usará um perfil parcial (com exceções de certificado) como base para criar o novo perfil. Isso fornecerá exceções ao certificado sem sujeira adicional decorrente do uso de um perfil inteiro. Preste atenção para ativar o Firefox com o modo *firefox no Selenium RC 1.0 Beta 2 ou posterior, e com o modo *chrome nas versões anteriores ao Selenium RC 1.0 Beta 2.

Para os modos de execução, *chrome ou *iehta eram os modos experimentais que ofereciam suporte a HTTPS e à manipulação de pop-ups de segurança em versões anteriores do RC Selenium. Eles foram estabilizados nos modos de execução *firefox e *iexplore desde o Selenium-RC 1.0 beta 2. Cuidado para usar o modo de execução de acordo com a versão do Selenium em uso.


Como reconhecer de forma eficaz os elementos da Web sem propriedade de ID

Usar um ID ou nome significativo é um modo eficiente e conveniente de localizar elementos. Também pode melhorar a capacidade de leitura de etapas de teste. Contudo, cada elemento deve ter um ID significativo e exclusivo, em especial o elemento dinâmico. O Selenium fornece diversas estratégias para reconhecer os elementos, como Xpath, DOM e CSS.

A seguir, uma amostra usando três estratégias para localizar um elemento em uma tabela dinâmica fornecida na Figura 6. Os códigos HTML estão na Listagem 11.

Figura 6. Amostra de tabela dinâmica
Amostra de tabela dinâmica
Listagem 11. Código HTML para a primeira coluna da tabela
	<table id="test_table" border="1">
		<tbody>
        <tr>
            <td align="left">
                <div class="test_class">Test 1</div>
            </td>
            <td align="center" style="vertical-align: top;">
                <table id="AUTOGENBOOKMARK_4">
                    <tbody>
                        <tr>
                            <td align="center" style="vertical-align: top;">
                                <div>
                                  <img alt="supported" src="supported.png"/>
                                </div>
                            </td>
                            <td align="center" style="vertical-align: top;">
                                <div>
                                   <a href="test?name=test1">edit</a>
                                </div>
                            </td>
	…….

Xpath é um modo simples de localizar elementos sem ID específico ou nome.

  • Se for conhecido outro atributo diferente do ID ou nome, use @attribute=value para localizar os elementos diretamente.
  • Se apenas certas partes do valor de atributo forem conhecidas, use contains(attribute, value) para localizar os elementos.
  • Se os elementos não têm atributos especificados, procure os elementos-pai mais próximos que têm atributos especificados com Firebug, depois, use Xpath para iniciar por esse elemento a fim de localizar o elemento desejado.
Tabela 1. Expressão XPath para localizar elementos
Localizar elementoExpressão XPath
Primeira coluna da linha n//table[@id='test_table']//tr[n]/td
A imagem da linha n//table[@id='test_table']//tr[n]//img
O link de edição de ‘Teste 1’ //a[contains(@href,test1)]

A tabela 1 mostra as expressões XPath dos elementos de localização. Com a ajuda de Firebug, o Xpath pode localizar os elementos e elementos duplicados. O IDE Selenium adotará o Xpath quando os elementos não tiverem IDs e nomes. Embora o Xpath ajude na consistência de scripts registrados, ele tem alta dependência da estrutura da página da Web. Isso torna as etapas de teste ilegíveis e aumenta a manutenção. Além disso, ele pode ser lento demais para executar etapas de teste com diversos XPath complicados. — expressões no Internet Explorer 7 e no Internet Explorer 8. Nesses casos, mude o Xpath para DOM, que é outra estratégia eficiente de localização.

DOM é abreviatura de Modelo de Objeto de Documento. O Selenium permite percorrer o DOM HTML com JavaScript. A flexibilidade Java permite diversas instruções nas expressões DOM, separadas por ponto-e-vírgula, e define funções em instruções.

Tabela 2. Expressão DOM para localizar elementos
Localizar elementoExpressão DOM
Primeira coluna da linha n dom=document.getElementById('test_table').rows[n-1].cells[0]
A imagem da linha n dom=element=document.getElementById('test_table').rows[n-1].cells[1]; element.getElementsByTagName('IMG')[0]
O link de edição de ‘Teste 1’
dom=function test(){
var array=document.getElementsByTagName('a');
var element;for(var i=0; i<array.length; i++)
{if(array[i].attributes.getNamedItem("href").\
value.indexOf('test2')!=-1){element=array[i];break;}}return element}; test()

A Tabela 2 mostra as expressões DOM dos elementos de localização. O localizador DOM também tem bom desempenho no Firefox e Internet Explorer. É preciso algum conhecimento de JavaScript para organizar expressões DOM. Às vezes, as expressões DOM são compridas demais para elementos complicados e são difíceis de ler (veja a expressão para o link de edição do Teste 1 mencionado na Tabela 2).

O localizador CSS é usado para selecionar elementos com seletores CSS. O localizador CSS é utilizado de forma eficiente quando os códigos HTML têm bom estilo. As expressões de amostra são mostradas na Tabela 3.

Tabela 3. Expressão CSS para localizar elementos
Localizar elementoExpressão CSS
Primeira coluna da linha ncss=#test_table .test_class:nth-child(n)
A imagem da linha n
css=#test_table  tr:nth-child(n) > td:nth-child(2) > 
table td:nth-child(1) > div >  img
O link de edição de ‘Teste 1’ css=a[href*='test2']

Em geral, escolha expressões de localizador familiares e seja consistente na estrutura do script. Se houver diversas expressões para executar, use o modo mais eficiente para localizar os elementos na página da Web.


Como manusear uma janela pop-up

Em geral, as ações são executadas na janela principal ativada pelo Selenium. Se quiser executar ações em uma nova janela gerada pela função window.open , mude o foco para a nova janela. Depois de executar as ações na janela pop-up, retorne o foco para a janela principal. O procedimento para manusear uma janela pop-up é definido na Listagem 12.

Listagem 12. Código de amostra para manusear uma janela pop-up
 //wait for the popup window with timeout;
selenium.waitForPopUp(windowname, timeout); 
//select the pop up window
selenium.selectWindow(popupWindowIdentifier);
//perform action on popup window and close the window;
.... 
//return to the main window use 'null' 
selenium.selectWindow(null);

O windowname é o segundo parâmetro a chamar a função window.open . O popupwindowIdentifier mencionado acima é um identificador de janela, que pode ser o ID da janela, nome dela, title=título da janela ou var=javascript variable. Se o atributo da janela pop-up for desconhecido, mas estiver realmente definido, use as funções getAllWindowIds(), getAllWindowNames() ou getAttributeFromAllWindows()para recuperar os atributos da janela pop-up.

Na versão mais recente do Selenium RC 1.0.1, o Selenium incluiu métodos como selectPopUp(String) e deselectPopUp(), cuja função foi fornecida por selectWindow(String) em versões anteriores.

Listagem 13. Funções pop-up para manusear uma janela pop-up
 //wait for the popup window with timeout;
selenium.waitForPopUp(“”, timeout); 
//same as selenium.selectWindow
selenium.selectPopUp(“”);
//perform action on popup window and close the window;
.... 
//same as selenium.selectWindow(null);
selenium.deselectPopUp();

A Listagem 13 mostra a maneira mais simples de manusear uma janela pop-up. Pode-se deixar o primeiro parâmetro vazio nas funções waitForPopUp e selectPopUp . Se aparecerem diversas janelas simultaneamente, especifique o atributo da janela.


Como manusear a janela de upload/download de arquivo

Selenium usa JavaScript para simular as ações. Assim, ele não suporta elementos de navegador como janela de upload, janela de download ou janela de autenticação. Para janelas acidentais, configure o navegador para ignorar janelas pop-up.

Figura 7. Janela de informações de segurança
Janela de informações de segurança

A solução para ignorar a janela de informações de segurança da Figura 7 é abrir Tools > Internet Options > Custom Level. Depois, ative o item Display mixed content.

Configurar o Internet Explorer para escapar da janela acidental reduzirá ou eliminará o manuseio desnecessário ao executar etapas de teste. Se o Firefox for configurado, porém, salve-o como um novo perfil e inicie o servidor com o perfil customizado. A razão para isso é mencionada na seção sobre teste de Web sites HTTPS.

Para as janelas de upload/download, é preferível lidar com elas em vez de ignorá-las. Para evitar as limitações do Selenium, uma sugestão é usar o robô Java AutoIt para lidar com problemas de upload e download de arquivos. O AutoIt foi projetado para automatizar as operações da GUI de janela. Ele pode reconhecer a maior parte da GUI de janela, fornece muitos APIs e pode converter facilmente para arquivos .exe, que podem ser executados diretamente ou chamados no código Java. A Listagem 14 ilustra os scripts para manusear o upload de arquivos. As etapas dos scripts:

  1. Determine o título da janela de upload de acordo com o tipo de navegador.
  2. Ative a janela de upload.
  3. Coloque o caminho de arquivo na caixa de edição.
  4. Envie-o.
Listagem 14. Scripts de AutoIt para manusear o upload
;first make sure the number of arguments passed into the scripts is more than 1 
If $CmdLine[0]<2 Then Exit EndIf
 handleUpload($CmdLine[1],$CmdLine[2])

;define a function to handle upload
 Func handleupload($browser, $uploadfile)
	 Dim $title                          ;declare a variable
            ;specify the upload window title according to the browser
            If $browser="IE" Then                  ; stands for IE;
 	      $title="Select file"
            Else                                 ; stands for Firefox
	       $title="File upload"
            EndIf
 
            if WinWait($title,"",4) Then ;wait for window with 
title attribute for 4 seconds;
                   WinActivate($title)                  ;active the window;
                   ControlSetText($title,"","Edit1",$uploadfile)   ;put the 
file path into the textfield  
                   ControlClick($title,"","Button2")                ;click the OK 
or Save button
            Else
	        Return False
            EndIf
 EndFunc 

No código Java, defina uma função para executar o arquivo .exe escrito pelo AutoIt e chame a função clicando em browse.

Listagem 15. Executar arquivo .exe escrito pelo AutoIt
public void handleUpload(String browser, String filepath) {
	String execute_file = "D:\\scripts\\upload.exe";
	String cmd = "\"" + execute_file + "\"" + " " + "\"" + browser + "\""
				+ " " + "\"" + filepath + "\""; //with arguments
	try {
		Process p = Runtime.getRuntime().exec(cmd);
		p.waitFor(); //wait for the upload.exe to complete
	} catch (Exception e) {
		e.printStackTrace();
	}
}

A Listagem 16 é o script de AutoIt para manusear a janela de download no Internet Explorer. Os scripts de download variam no Internet Explorer e Firefox.

Listagem 16. Scripts de AutoIt para manusear o download no Internet Explorer
If $CmdLine[0]<1 Then Exit EndIf
handleDownload($CmdLine[1])
Func handleDownload($SaveAsFileName)
Dim $download_title="File Download" 
If WinWait($download_title,"",4) Then
    WinActivate($download_title)
    Sleep (1000)
    ControlClick($download_title,"","Button2","")
    Dim $save_title="Save As"
    WinWaitActive($save_title,"",4)
    ControlSetText($save_title,"","Edit1", $saveAsFileName)
    Sleep(1000)
    if FileExists ($SaveAsFileName) Then
	FileDelete($SaveAsFileName)
	EndIf
    ControlClick($save_title, "","Button2","")
    Return TestFileExists($SaveAsFileName)
Else
    Return False
EndIf
EndFunc

Os scripts de AutoIt são fáceis de escrever, mas são dependentes do tipo de navegador e da versão, visto que o título da janela e a classe de controle da janela variam entre navegadores e edições diferentes.


Como verificar as informações de alerta/confirmação/prompt

Para a caixa de diálogo de alerta gerada por window.alert(), use selenium.getAlert() para recuperar a mensagem de um alerta de JavaScript gerado durante a ação anterior. A função falhará se não houver alerta. Obter um alerta tem o mesmo efeito de clicar manualmente em OK.

Para a caixa de diálogo de confirmação gerada por window.confirmation(), use selenium.getConfirmation() para recuperar a mensagem de uma caixa de diálogo de confirmação JavaScript gerada durante a ação anterior. Por padrão, a função retornará o valor verdadeiro, tendo o mesmo efeito de clicar manualmente em OK. Isso pode ser alterado por uma execução anterior do comando chooseCancelOnNextConfirmation .

Para a caixa de diálogo de prompt gerada por window.prompt(), use selenium.getPromt() para recuperar a mensagem da caixa de diálogo de prompt de questão JavaScript gerada durante a ação anterior. O manuseio bem-sucedido do prompt exige a execução anterior do comando answerOnNextPrompt .

Os alertas de JavaScript não aparecerão com as caixas de diálogo visíveis no Selenium. Deixar de manusear essas caixas de diálogo pop-up causará exceções que afirmarão que há alertas inesperados. As etapas de teste falharão.

Recursos

Aprender

Obter produtos e tecnologias

Discutir

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Software livre
ArticleID=657114
ArticleTitle=Teste da Web automatizado com Selenium
publish-date=07222011