Selenium does not find the element

1

I'm starting to study Selenium WebDriver and I'm doing some testing.

I created a fictitious account on an e-commerce site to automate a product purchase. I can access the page, log in and go to the main screen, but in this page I try to search for an element and it is not found.

I always get the error for the element not found, but if I inspect the page and use the same xpath it is there.

Error:

org.openqa.selenium.TimeoutException: Expected condition failed: waiting for presence of element located by: By.xpath: //div[@class='profile']/a[@href='//www.walmart.com.br/minhaconta'][@class='open-link topbar-buttons icon-topbar-link loaded'] (tried for 10 second(s) with 500 milliseconds interval)
at org.openqa.selenium.support.ui.WebDriverWait.timeoutException(WebDriverWait.java:81)
at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:271)
at br.com.daivid.desafioqa.page.LoginPage.autenticar(LoginPage.java:58)
at br.com.daivid.desafioqa.test.LoginPageTest.test(LoginPageTest.java:31)
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)

Code:

public class LoginPage {
    private WebDriver driver;
    private WebDriverWait webDriverWait;
    private Actions action;

    public LoginPage(WebDriver driver) {
        this.driver = driver;
        action = new Actions(driver);
        webDriverWait = new WebDriverWait(driver, 10);
        System.setProperty("driver.chromedriver.driver", "BrowserDriver/chromedriver.exe");
    }

    public LoginPage acessarPagina(String url) {
        driver.get(url);
        driver.manage().window().maximize();
        return this;

    }

    public void autenticar(String user, String password) {
        WebElement btEntrar = driver.findElement(By.xpath("//div[@class='login']/div[@class='wrapper']/a[@id='topbar-login-link'][@href='']"));
        btEntrar.click();

        //Esperando o iframe que aparece ficar visível
        webDriverWait.until(ExpectedConditions.visibilityOfElementLocated(By.id("iframeLogin")));

        //alterando frame atual para o frame que aparece na tela e atribuindo a variavel driver
        driver = driver.switchTo().frame(driver.findElement(By.id("iframeLogin")));

        webDriverWait.until(ExpectedConditions.presenceOfElementLocated(By.id("signinField")));

        WebElement usuario = driver.findElement(By.xpath("//input[@id='signinField']"));
        usuario.sendKeys(user);

        WebElement senha = driver.findElement(By.xpath("//input[@id='password']"));
        senha.sendKeys(password);

        driver.findElement(By.xpath("//button[@id='signinButtonSend']")).click();

        //Voltando para o frame principal e atribuindo a variavel driver
        driver = driver.switchTo().defaultContent();

        webDriverWait.until(ExpectedConditions.presenceOfElementLocated(By.xpath(
                "//div[@class='profile']/a[@href='//www.walmart.com.br/minhaconta'][@class='open-link topbar-buttons icon-topbar-link loaded']")));


        WebElement menuUsuario = driver.findElement(By.xpath(
                "//div[@class='profile']/a[@href='//www.walmart.com.br/minhaconta'][@class='open-link topbar-buttons icon-topbar-link loaded']/span[@class='number']/following-sibling::*"));


        action.moveToElement(menuUsuario).build();

        String usuarioLogado = driver.findElement(By.xpath("//strong[text()='Desafio QA']")).getText();

        System.out.println("AUTENTICADO: " + usuarioLogado);
    }

}
    
asked by anonymous 15.05.2018 / 02:57

0 answers