HtmlUnitDriver não econtra id do campo

1 resposta
htmlunitseleniumjavajavascript
S

Olá pessoal!
Estou a mais de 2 semanas presa em um problema com Selenium e o driver HtmlUnitDriver.
Seguinte, a finalidade do que estou fazendo, não é para testes, mas uma automatização da ação do usuário do navegador, estou utilizando o HtmlUnitDriver, para não abrir o navegador e não ter que apontar um .exe.
A página que estou realizando, vai mostrando os componentes de acordo com valores selecionados em combos, quando altero a segunda combo é que começam os problemas, pois não acha o id do proximo, percebi que o código HTML nesse momento está diferente e por isso não encontra, só não estou conseguindo achar uma solução pra isso. Já utilizei o wait com condições, thread.sleep, encontrar o elemento por xpath, nada disso resolveu pra mim.

Desde já agradeço.

Código:

public static void main(String[] args) throws InterruptedException {

HtmlUnitDriver driver = new HtmlUnitDriver(true);
	
	try{		
		
		driver.get("https://www.fazenda.sp.gov.br/guiasinternet/Gare/Paginas/Gare.aspx");
		 
		driver.findElement(By.id("ReceitaTipo")).click();
	 
		 {
		   WebElement dropdown = driver.findElement(By.id("ReceitaTipo"));
		   dropdown.findElement(By.xpath("//option[. = 'GNRE']")).click();
		 }
	 
		 //printar código fonte da pagina 		 	 
		 System.out.println(driver.getPageSource());
		 
		 Thread.sleep(5000);
		 
		 driver.findElement(By.id("CodigoReceita")).click();
	 
		 {
		   WebElement dropdown = driver.findElement(By.id("CodigoReceita"));
		   dropdown.findElement(By.xpath("//option[. = '10002.1 - Energia Elétrica']")).click();
		 } 
     
		 //A partir daqui para de funcionar
		 System.out.println(driver.getPageSource());		 
     
		 driver.findElement(By.id("CnpjCpf")).click();
		 driver.findElement(By.id("CnpjCpf")).sendKeys("[CPF removido]");	
	
		 driver.quit();
    
	}catch(Exception e){
		e.printStackTrace();
	}
}

1 Resposta

Mike

Se o elemento estiver com display: none, voce não vai conseguir pega-lo.

Caso esteja com display: none, voce pode executar um código JS ai na sua classe para deixar o display como inline ou block por exemplo.

Criado 3 de setembro de 2019
Ultima resposta 4 de set. de 2019
Respostas 1
Participantes 2