Я хочу использовать: Login_Page Login = PageFactory.initElements (драйвер, Login_Page.class); уникальным способом на всех этапах. Когда я использую его для каждого шага, у меня нет проблем, но, напротив, Java показывает мне ошибку: «Драйвер значения всегда равен« null »».
Я также хотел бы заменить Thread.sleep ( 2000); для лучшего решения. ![enter image description here](https://i.stack.imgur.com/9uX0u.png)
Вот мой код:
package stepdefs;
import Pages.Login_Page;
import cucumber.api.java.pt.Dado;
import cucumber.api.java.pt.Entao;
import cucumber.api.java.pt.Quando;
import org.junit.Assert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.PageFactory;
import java.util.concurrent.TimeUnit;
public class StepDefinitions {
WebDriver driver;
Login_Page Login = PageFactory.initElements(driver, Login_Page.class);
@Dado("^que que estou na pagina principal do Gmail\\.$")
public void que_que_estou_na_pagina_principal_do_Gmail () throws Exception
{
System.setProperty("webdriver.chrome.driver", "C:\\browsers\\chromedriver.exe");
driver = new ChromeDriver();
driver.navigate().to("https://www.gmail.com");
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
}
@Quando("^forneco as credenciais validas\\.$")
public void forneco_as_credenciais_validas () throws Exception {
// Login_Page Login = PageFactory.initElements(driver, Login_Page.class);
Login.setEmail("rbkamontana@gmail.com");
Login.ClickOnNextButton();
Thread.sleep(2000);
Login.setSenha("automation10");
Thread.sleep(3000);
Login.ClickOnEnterButton();
driver.manage().window().maximize();
Thread.sleep(3000);
}
@Entao("^posso ver que estou logado\\.$")
public void posso_ver_que_estou_logado () throws Exception {
driver.findElement(By.xpath("//*[@id=\"gb\"]/div[2]/div[3]/div[1]/div[2]/div/a/span")).click();
String stringAtual = driver.findElement(By.xpath("//*[@id=\"gb\"]/div[2]/div[4]/div[1]/div[2]/div[1]")).getText();
String StringEsperada = "Rebeka Montana";
Assert.assertTrue(stringAtual.contains(StringEsperada));
//driver.quit();
}
}