1
resposta

ElementNotVisibleException

Gostaria de ajuda neste código. Não estou conseguindo selecionar uma opção no select. O meu código consegue percorrer toda lista, o valor passado como parâmetro está sendo capturado pela variável módulo, ou seja, quando peço para imprimir o valor da variável "modulo" -> o valor impresso é o mesmo que foi colocado na chamado do médodo. Mas ao executar o código está gerando esta exceção.

Segue o código HTML

<select data-placeholder="Escolha um módulo do sistema..." id="cabecalho" class="combo-pesquisa" style="width: 350px; display: none;" tabindex="-1" onchange="javascipt:changeSystem(this.value);">
                                                                                                                <option value="208">ALMOXADM</option>
                                                                                                                    <option value="365">Auditoria</option>
                                                                                                                    <option selected="true" value="283">CDEM</option>
                                                                                                                    <option value="195">Contratos</option>
                                                                                                                    <option value="257">Contratos do SUS</option>
                                                                                                                    <option value="263">Convocações</option>
                                                                                                                    <option value="2">Descentralização de Créditos</option>
                                                                                                                    <option value="213">Eleição</option>
                                                                                                                    <option value="280">GAEP</option>
                                                                                                                    <option value="363">Gestão de Contratos</option>
                                                                                                                    <option value="358">Gestão de Portfólio de Projetos</option>
                                                                                                                    <option value="320">Hotelaria Hospitalar</option>
                                                                                                                    <option value="261">Jurídico</option>
                                                                                                                    <option value="248">Monitoramento de Obras</option>
                                                                                                                    <option value="7">Orçamentário e Financeiro</option>
                                                                                                                    <option value="356">Organograma</option>
                                                                                                                    <option value="48">Painel</option>
                                                                                                                    <option value="327">Patrimônio</option>
                                                                                                                    <option value="171">Pesquisa</option>
                                                                                                                    <option value="250">Pesquisa de Satisfação</option>
                                                                                                                    <option value="173">Processo Seletivo</option>
                                                                                                                    <option value="220">Progressão</option>
                                                                                                                    <option value="338">Projetos de Pesquisa</option>
                                                                                                                    <option value="169">Protocolo</option>
                                                                                                                    <option value="366">Requisições</option>
                                                                                                                    <option value="309">SGP</option>
                                                                                                                    <option value="279">SIGOF</option>
                                                                                                                    <option value="4">SIS</option>
                                                                                                                    <option value="254">Telefonia</option>
                                                                                                                    <option value="198">VigiHosp</option>
                                                                                                        </select>

Este é o médoto que seleciona um elemento na lista.

public void escolheModulo(String modulo){
        driver.manage().timeouts().implicitlyWait(113, TimeUnit.MILLISECONDS);
        WebElement select = driver.findElement(By.tagName("select"));
        List<WebElement> allOptions = select.findElements(By.tagName("option"));
        select.getAttribute(modulo);
        for (WebElement option : allOptions) {
            //System.out.println(String.format("Value is: %s", option.getAttribute("value")));
            //System.out.println(modulo);
            if(option.getAttribute("value").equals(modulo)){
                option.click();                
            }
            else{
                System.out.println("Módulo não encontrado");
            }
        }

Este é o código que chama o médodo acesso.escolheModulo("208");

Código de erro: org.openqa.selenium.ElementNotVisibleException: Element is not currently visible and so may not be interacted with Command duration or timeout: 232 milliseconds

1 resposta

Oi Marcia

O problema é que o seu select está com um display: none na tag style. O selenium não consegue clicar da mesma forma que um usuário não conseguiria visualizar/clicar em um elemento que não está visível no seu HTML.

Se você realmente precisa que o elemento seja hidden, e que o teste clique na opção, você pode usar o JavascriptExecutor:

https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/JavascriptExecutor.html

Algo como:

JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("<seletorJS>.click();", element);

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software