Duvida automação com selenium Webdriver

@stefanteixeira Mas eu vou precisar usar o Chrome, Firefox e o IE

@nayavsantos aí complicou… Tenta fazer um downgrade do Firefox pra versão 46, caso realmente não esteja conseguindo usar com a 47.

Então acabei fazendo o que vc falou @stefanteixeira, estou fazendo meus testes usando o Chrome, pelo menos por enquanto, rsrs…
Mas agora estou com outro problema, preciso selecionar um valor em um combo usando o webdriver, mas não estou sabendo como fazer, vou colocar o código html aqui em baixo, será que alguém sabe como eu faço isso? já tentei de várias formas e não consegui. :(

<div id="divChamadoCliente" class="divConteudoCombo">
<span id="lblCliente">Cliente:</span>
<select id="cmbCliente" data-bind="combobox: clienteSelecionado, options: clientes, optionsValue: 'id', optionsText: 'nome'" name="ctl00$body$cmbCliente" style="display: none;">
<option value="">SELECIONE</option>
<option value="119">Adler Pti</option>
<option value="103">Ahb-Caico</option>
<option value="92">Ahb-Caraubas</option>
<option value="159">Ahb-Currais Novos</option>
<option value="91">Ahb-Pau dos Ferros</option>
<option value="127">Arcelormittal - Juiz de Fora</option>
<option value="122">B&q-Assu</option>
<option value="94">B&q-Natal</option>
<option value="199">B2D TECNOLOGIA LTDA</option>
<option value="194">BCA BUREAU E EQUIPAMENTOS LTDA</option>
<option value="128">Belgo - Cariacica</option>
<option value="163">Biocor Instituto</option>
<option value="120">Cabtec</option>
<option value="156">Camilo dos Santos</option>
<option value="171">Celpe</option>
<option value="181">Celpe-Cabo</option>
<option value="182">Celpe-Carpina</option>
<option value="183">Celpe-Caruaru</option>
<option value="184">Celpe-Garanhuns</option>
<option value="179">Celpe-Norte</option>
<option value="186">Celpe-Petrolina</option>
<option value="185">Celpe-Serra Talhada</option>
<option value="180">Celpe-Sul</option>
<option value="153">Ceneged-Caruaru</option>
<option value="155">Ceneged-Garanhuns</option>
<option value="123">Cgb-Petrolina</option>
<option value="154">Cgb-Serra Talhada</option>
<option value="197">CLARO S.A.</option>
<option value="196">CLIENTE TESTE - CLEDSON</option>
<option value="192">CLILA CLIN EM ANAL DE LAB LTADA - ME</option>
<option value="138">Cnh</option>
<option value="170">Coelba</option>
<option value="178">Coelba-Centro</option>
<option value="174">Coelba-Metropolitano</option>
<option value="177">Coelba-Norte</option>
<option value="176">Coelba-Oeste</option>
<option value="173">Coelba-Sudoeste</option>
<option value="175">Coelba-Sul</option>
<option value="172">Cosern</option>
<option value="111">Dinamo-Alagoinhas</option>
<option value="144">Dinamo-Cabo</option>
<option value="157">Dinamo-Camacari</option>
<option value="147">Dinamo-Carpina</option>
<option value="113">Dinamo-Goianinha</option>
<option value="140">Dinamo-Itapua</option>
<option value="158">Dinamo-Macaiba</option>
<option value="101">Dinamo-Metropolitano Norte</option>
<option value="167">Dinamo-Metropolitano Sul</option>
<option value="115">Dinamo-Natal</option>
<option value="135">Dinamo-Nova Cruz</option>
<option value="90">Dinamo-Parnamirim</option>
<option value="95">Dinamo-Paulo Afonso</option>
<option value="169">Dinamo-Ribeira do P</option>
<option value="105">Dinamo-Sao Jose</option>
<option value="193">DR. EYMARD MIRANDA GUIMARAES</option>
<option value="146">Elmo Calcados - Centro</option>
<option value="108">Embare</option>
<option value="102">Engelmig-Eunapolis</option>
<option value="134">Engelmig-Itabuna</option>
<option value="106">Engelmig-Jequie</option>
<option value="160">Engelmig-Santo Antoni</option>
<option value="151">Engelmig-Valenca</option>
<option value="164">Engelmig-Vitoria da C</option>
<option value="121">Esab Industria e Comercio</option>
<option value="88">Ezentis-Feira de Sant</option>
<option value="99">Ezentis-Piraja</option>
<option value="150">Ezentis-Praca da Se</option>
<option value="139">Ezentis-Serrinha</option>
<option value="114">Formtap Interni Sistemas Automotivos S/A</option>
<option value="136">Gerdau Acominas</option>
<option value="168">Granville-Irece</option>
<option value="96">Granville-Itaberaba</option>
<option value="100">Granville-Jacobina</option>
<option value="162">Granville-Juazeiro</option>
<option value="137">Granville-Senhor do B</option>
<option value="89">Hospital Marcio Cunha</option>
<option value="124">Hospital Mater Dei</option>
<option value="130">Hospital Mater Dei S/A</option>
<option value="87">I-Gas Embu Indiv. Adm. e Serv. de Glp Lt</option>
<option value="110">Injeplastic</option>
<option value="104">Inst Vida Patol Clinica Marilia LTDA</option>
<option value="149">INSTITUTO HERMES PARDINI S.A</option>
<option value="201">ITALY LINE FERRAGENS LTDA</option>
<option value="117">Iveco - Sete Lagoas</option>
<option value="93">Jamef - Contagem</option>
<option value="143">Jfsteel-Barreiras</option>
<option value="166">Jfsteel-Bom Jesus Da</option>
<option value="107">Jfsteel-Brumado</option>
<option value="98">Jfsteel-Guanambi</option>
<option value="116">Jfsteel-Ibotirama</option>
<option value="200">KKKK PLATAFORMA TESTE</option>
<option value="190">LABORATORIO AN CLI DIAGNOSE S/S LTDA ME</option>
<option value="195">LABORATORIO BIOCLINICO LTDA</option>
<option value="145">Lifecenter</option>
<option value="109">Lojas Rede - Caetes</option>
<option value="118">Magneti Marelli - Betim</option>
<option value="198">MED IMAGEM S/C</option>
<option value="125">Megafort - Contagem</option>
<option value="97">Megafort - Goias</option>
<option value="161">Megafort - Vitoria</option>
<option value="126">Novo Metropolitano S.A</option>
<option value="148">Patrus Transportes - Matriz</option>
<option value="191">PAULO SERGIO NETO SOARES</option>
<option value="165">Petronas Lubrificantes Brasil S.A</option>
<option value="142">Rent A Truck Operador Logistico LTDA</option>
<option value="187">Sada Transportes</option>
<option value="129">Sinaf Seguros</option>
<option value="131">Suggar Eletrodomesticos</option>
<option value="202">TESTE1</option>
<option value="203">TESTE2</option>
<option value="204">TESTE3</option>
<option value="205">TESTE4</option>
<option value="206">TESTE5</option>
<option value="207">TESTE6</option>
<option value="208">TESTE7</option>
<option value="152">Unifort</option>
<option value="141">Usiminas - Ipatinga</option>
<option value="132">Usiminas Sp</option>
<option value="112">Vallourec Tubos do Brasil S/A</option>
<option value="133">Verdemar - Sion Loja 02</option>
</select>
<input class="ui-autocomplete-input custom-combobox-input ui-widget ui-widget-content ui-state-default ui-corner-left" onclick="this.select();" placeholder="SELECIONE" autocomplete="off" role="textbox" aria-autocomplete="list" aria-haspopup="true">
<button class="ui-button ui-widget ui-state-default ui-button-icon-only ui-corner-right ui-button-icon" type="button" tabindex="-1" title="Exibir Todos" role="button" aria-disabled="false">
</div>

@nayavsantos Oi, e qual seria a dificuldade que está tendo com essa lista?

Eu não consigo selecionar nenhuma opção do combo, atualmente meu código está assim:

	@Test
	public void testCriarChamado() throws Exception {
		driver.manage().window().maximize();
		driver.findElement(By.id("lnkChamados")).click();
		driver.findElement(By.id("lnkChamadoCriar")).click();

		
		 WebElement select = driver.findElement(By.id("cmbCliente"));
		    List<WebElement> options = select.findElements(By.name("ctl00$body$cmbCliente"));
		    for(WebElement option : options){
		        if(option.getText().equals("Dinamo-Itapua")) {
		            option.click();
		            break;
		        }
		        
		       
		    }
Select dropdown = new Select(driver.findElement(By.id("cmbCliente")));

dropdown.selectByVisibleText("Ahb-Caraubas ");

ou

 dropdown.selectByValue("92");

@Leonardo-Galani com o código que vc me passou, retorna o erro abaixo:

CriarChamado (2)
gbhelpdesk.CriarChamado
testCriarChamado(gbhelpdesk.CriarChamado)
org.openqa.selenium.NoSuchElementException: Cannot locate element with text: Ahb-Caraubas 
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.53.1', revision: 'a36b8b1', time: '2016-06-30 17:32:46'
System info: host: 'NOT002', ip: '169.254.218.171', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.8.0_101'
Driver info: driver.version: unknown

	at org.openqa.selenium.support.ui.Select.selectByVisibleText(Select.java:150)

	at gbhelpdesk.CriarChamado.testCriarChamado(CriarChamado.java:51)

	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

	at java.lang.reflect.Method.invoke(Unknown Source)

	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)

	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)

	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)

	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)

	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)

	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)

	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)

	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)

	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)

	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)

	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)

	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)

	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)

	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)

	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)

	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)

	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)

	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)

	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)

	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)




Opa, beleza?

Seguinte

WebElement select = driver.findElement(By.id("cmbCliente"));

Tu por acaso não precisa clicar para essa lista ficar visível?

Algo tipo:

WebElement select = driver.findElement(By.id("cmbCliente"));
select.click();
continue o código aqui...

??

Coloquei o código assim:

	@Test
	public void testCriarChamado() throws Exception {
		driver.manage().window().maximize();
		driver.findElement(By.id("lnkChamados")).click();
		driver.findElement(By.id("lnkChamadoCriar")).click();

		WebElement select = driver.findElement(By.id("cmbCliente"));
		select.click();
		Select dropdown = new Select(driver.findElement(By.id("cmbCliente")));
		dropdown.selectByVisibleText("Ahb-Caraubas ");

	}

E o seguinte erro é retornado:

CriarChamado (2)
gbhelpdesk.CriarChamado
testCriarChamado(gbhelpdesk.CriarChamado)
org.openqa.selenium.ElementNotVisibleException: element not visible
  (Session info: chrome=52.0.2743.116)
  (Driver info: chromedriver=2.23.409699 (49b0fa931cda1caad0ae15b7d1b68004acd05129),platform=Windows NT 6.1.7601 SP1 x86) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 35 milliseconds
Build info: version: '2.53.1', revision: 'a36b8b1', time: '2016-06-30 17:32:46'
System info: host: 'NOT002', ip: '169.254.218.171', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.8.0_101'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities [{applicationCacheEnabled=false, rotatable=false, mobileEmulationEnabled=false, networkConnectionEnabled=false, chrome={chromedriverVersion=2.23.409699 (49b0fa931cda1caad0ae15b7d1b68004acd05129), userDataDir=C:\Users\nvsantos\AppData\Local\Temp\scoped_dir7060_5365}, takesHeapSnapshot=true, databaseEnabled=false, handlesAlerts=true, hasTouchScreen=false, version=52.0.2743.116, platform=XP, browserConnectionEnabled=false, nativeEvents=true, acceptSslCerts=true, locationContextEnabled=true, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true}]
Session ID: 4bde5179e92be9dbcebff5082a0beb5a

	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)

	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)

	at java.lang.reflect.Constructor.newInstance(Unknown Source)

	at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206)

	at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158)

	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:678)

	at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:327)

	at org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:85)

	at gbhelpdesk.CriarChamado.testCriarChamado(CriarChamado.java:49)

	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

	at java.lang.reflect.Method.invoke(Unknown Source)

	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)

	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)

	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)

	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)

	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)

	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)

	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)

	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)

	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)

	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)

	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)

	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)

	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)

	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)

	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)

	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)

	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)

	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)

	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)

	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)




Opa beleza??
Quando falei do .click me referia ao primeiro código que usou.

	@Test
	public void testCriarChamado() throws Exception {
		driver.manage().window().maximize();
		driver.findElement(By.id("lnkChamados")).click();
		driver.findElement(By.id("lnkChamadoCriar")).click();

		
		 WebElement select = driver.findElement(By.id("cmbCliente"));
select.click();
		    List<WebElement> options = select.findElements(By.name("não esse elemento, mas outro"));
		    for(WebElement option : options){
		        if(option.getText().equals("Dinamo-Itapua")) {
		            option.click();
		            break;
		        }
		        
		       
		    }

Ps: Só nota que deixei um comentário em uma busca dos elementos. Notei que o erro era na linha 49 do teu código, qual trecho é apresentado nessa linha?

o que estava na linha 49 era :

List<WebElement> options = select.findElements(By.name("ctl00$body$cmbCliente"));

Eu não sei qual elemento colocar no lugar do “ctl00$body$cmbCliente”

pq no código html esta assim:

<div id="divChamadoCliente" class="divConteudoCombo">
<span id="lblCliente">Cliente:</span>
<select id="cmbCliente" data-bind="combobox: clienteSelecionado, options: clientes, optionsValue: 'id', optionsText: 'nome'" name="ctl00$body$cmbCliente" style="display: none;">

Se eu postar aqui o código exportado do selenium IDE ajuda?

@nayavsantos disse em Duvida automação com selenium Webdriver:

“ctl00$body$cmbCliente”

Esse elemento pode ser dinamico e com isso estar gerando esse erro, já tentou ver algo relacionado com css ou tentar o mesmo id que usou para clicar antes??

(Sugiro uma procura no google sobre como captar elementos com webdriver …) :+1:

@Ramses-Saccol-de-Almeida com id eu ja tentei, com o css tbm mas não sei se foi da forma correta, vou fazer um pesquisa no google sobre os elementos. Estou começando com o webdriver, mas estou com o prazo um pouco apertado aqui na empresa. De qualquer forma muito obrigada a atenção de todos! :)

O problema acontecia porque o elemento "Ahb-Caraubas " nao existe, e sim “Ahb-Caraubas”.

Tenta com o código do select que o Galani passou antes:

Select dropdown = new Select(driver.findElement(By.id("cmbCliente")));
dropdown.selectByVisibleText("Ahb-Caraubas");

@lgiacomini92 fiz o que vc falou, no primeiro fala do erro da linha 49, e corrigindo fala que o elemento não esta visível =(
Mesmo assim, muito obrigada.

Me perdi já em tanto código hahah.

Não tem segredo pra selecionar uma option de um combobox. A única diferença é que, pra manipular comboboxes, vc precisa usar a classe Select.

Basta fazer:

WebElement element = driver.findElement(By.id("cmbCliente"));
Select dropdown = new Select(element); <-- Select precisa de um WebElement, que é o elemento <select> no html, esse com id "cmbCliente"

dropdown.selectByVIsibleText("Ahb-Caraubas");
OU
dropdown.selectByValue("92");

Faz exatamente assim e vê no que dá. Pelo que vi nas últimas respostas tinham umas coisas meio redundantes, deixa somente esse código que coloquei.

Abs

@nayavsantos

Nesse código que vc postou vc tá criando o WebElement select, mas na hora de dar new Select vc tá buscando pelo elemento de novo. Deveria ser:

WebElement select = driver.findElement(By.id("cmbCliente"));
select.click();
Select dropdown = new Select(element);

Em paralelo aos seus problemas, te dou um conselho: use Page Objects. Isso vai facilitar muito sua vida conforme a cobertura dos testes for aumentando.

O @andrethiago criou um post sobre isso, dá uma lida quando tiver um tempo ;)

Log in to reply

Looks like your connection to Agile Testers was lost, please wait while we try to reconnect.