1
resposta

Após trocar para PhantomJS todos os testes falham

Boa tarde pessoal,

Fiz toda uma suíte de testes utilizando o Selenium com o TestNG para execução dos testes, até então estava utilizando o driver do Chrome.

Aí que vem a questão, instalei o PhantomJS para execução headless, porém quando executo os testes utilizando ele, todos os testes falham por timeout a espera de algum elemento (normalmente quando há alguma espera de elemento a ser exibido).

Toda minha suíte de testes falha quando uso o PhantomJS, mas quando é o Chrome roda normal. Alguém já teve este problema?

Segue o código que estou utilizando pra instanciar o browser.

    public static WebDriver startChromeDriver(WebDriver driver) {
        DesiredCapabilities caps = new DesiredCapabilities();
        caps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, "../dentalSpeedTest/src/test/resources/drivers/phantomjs.exe");
        caps.setJavascriptEnabled(true);
        caps.setCapability("takesScreenshot", true);
        driver = new PhantomJSDriver(caps);
        return driver;
    }

Obrigado desde já!

1 resposta

Olá, Eduardo

Encontrei alguns fóruns onde usuários que tiveram problema parecido (testes passando em FireFox e Chrome, mas falhando no PhantomJS) resolveram o problema os comandos WaitFor (ex: waitForElementPresent e waitForVisible). A explicação é que o PhantomJS seria mais lento que o driver do Chrome e, por isso, os elementos demorariam mais para aparecer nas páginas, e assim provocando os erros no Selenium. Com os comandos waitFor (waitForElementPresent e waitForVisible) você obriga o teste a esperar até os elementos do teste estarem presentes para só então ele ser executado.