Duvida automação com selenium Webdriver

@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 ;)

usually this error happens by selenium does not support the version of Firefox you should have to updates Firefox or try in different browser

Log in to reply

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