Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Clicar em um link com webdriverwait

Estou com problema em clicar em um link do menu de uma página em um projetinho que estou desenvolvendo. A principio eu preciso fazer o login, logo após eu conseguir o Selenium efetuar o login, até aparecer a página do sistema demora em torno de uns 10 segundos (sim demora bastante por conta e utilizar uma conexão VPN), após efetuar o login eu gostaria de clicar em um link que tem o texto de "Clientes" que se encontra em um menu ja na página do sistema. Pela demora da entrada do sistema resolvi utilizar o WebDriverWait e dei um timeout bem considerável ja imaginando cenários onde a rede estivesse muito lenta. E no meu wait.until coloquei o id do ahref onde eu gostaria de clicar. Porém meu selenium me devolve o seguinte erro: Expected condition failed: waiting for element to be clickable: By.id: ui-id-204(tried for 40 second(s) with 500 milliseconds interval) Ele não está conseguindo encontrar o elemento, porém o elemento está la e deixo aqui o html do sistema e o código que fiz caso alguem possa me ajudar.

<li class="ui-state-default ui-corner-top" role="tab" tabindex="-1" aria-controls="s_sctrl_tabScreen_noop" aria-labelledby="ui-id-204" aria-selected="false">
<a data-tabindex="tabScreen1" href="#s_sctrl_tabScreen_noop" class="ui-tabs-anchor" role="presentation" tabindex="-1" id="ui-id-204">Clientes</a></li>

E meu código java:

    @Test
    public void buscaCliente() {
        WebDriverWait wait = new WebDriverWait(driver, 40);
        WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("ui-id-204")));
    }
}

obs: Ja tentei buscar o elemento por nome.

6 respostas

Fala ai Igor, de boa ?

Cara, faz um teste bem tosco, por favor, altera o id desse campo, para invés de ter os hifens ser tudo junto, algo assim:

UiId204 e vê se funciona.

Eai Matheus tudo tranquilo,

Cara voce nao vai acreditar, após fazer varios testes eu descobri que ao logar no sistema o id do href não é sempre o mesmo?!?!? Sim isso mesmo kkk foi uma surpresa pra mim mas hora ele era ui-id-204 e em outro login no sistema ele mudava para ui-id-144 .... Cara eu não sabia que id de links de menu poderia ser dinamico e isso me deixou absurdamente confuso kkk mas enfim resolvi usar então a propriedade

By.linkText("Clientes")

Pois bem o teste passou, porém agora ao tentar clicar no link o Selenium me devolve o seguinte erro

org.openqa.selenium.WebDriverException: unknown error: Element <a data-tabindex="tabScreen1" href="#s_sctrl_tabScreen_noop" class="ui-tabs-anchor" role="presentation" tabindex="-1" id="ui-id-12">...</a> is not clickable at point (135, 109). Other element would receive the click: <html ot="SiebWebMainWindow" lang="pt" class="siebui-busy">...</html>

Ele diz que o elemento não é clicável, dei uma pesquisada e encontrei algo relacionado ao código javascript embutido no href porém nao encontrei nada de javascript no link (posso estar errado).. Tem alguma sugestão Matheus?? Valeuuu

solução!

A galera geralmente faz algo assim:

((JavascriptExecutor)driver).executeScript("arguments[0].click()", elemento); 

Show Matheus realmente funcionou mas você poderia deixar mais claro o porque do problema ?? Obrigado pela ajuda cara!

Pelo que entendi, esse tipo de ação, é interpretado via js ai você precisa de um cara que saiba executar js, por padrão o webdriver consegue, por esse motivo, o cast funciona.

Show Matheus, obrigado pela ajuda!!