下面的代码在
homeSignInLink.click();
中失败并给出错误
"NullPointerException: Cannot invoke "org.openqa.selenium.SearchContext.findElement(org.openqa.selenium.By)" because "this.searchContext" is null
代码
public class LoginTest extends TestBase
{
WebDriver driver;
HomePage objHomePage = new HomePage(driver);
@Test
public void login_check()
{
objHomePage.clickHomeSignInLink();
objHomePage.clickRecruiterSignInLink();
}
}
public class HomePage
{
WebDriver driver;
@FindBy(xpath="//a[@class='nav-link bold' and text()='Sign in']") WebElement homeSignInLink;
@FindBy(xpath="//a[text()='Recruiter sign in']") WebElement recruiterSignInLink;
public HomePage(WebDriver driver)
{
this.driver = driver;
//This initElements method will create all WebElements
PageFactory.initElements(driver, this);
}
public void clickHomeSignInLink()
{
homeSignInLink.click();
}
public void clickRecruiterSignInLink()
{
recruiterSignInLink.click();
}
}
请在所有脚本中使用 TestBase 类中的相同 WebDriver 实例。 例如,在 LoginTest 类中删除 WebDriver 声明并修改行:
HomePage objHomePage = new HomePage(TestBase.driver);
在 TestBase 类中将 WebDriver 实例设置为静态。
WebDriver 驱动程序;您刚刚声明,因此其无效。
public class LoginTest extends TestBase { //注释掉这个,因为你已经在扩展 TestBase // WebDriver 驱动程序;
//也不要提及驱动程序 //= new Chromedriver(); // 在//方法之前..写在这里。
public class LoginStep {
public static WebDriver driver = new ChromeDriver();
LoginPom lp = new LoginPom(driver);
@Given("user navigate the login page")
public void user_navigate_the_login_page() {
WebDriverManager.chromedriver().setup();
//driver = new ChromeDriver();
driver.get("https://letcode.in/");
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
lp.Loginbutton().click();
webdriver 驱动程序 = new chromedriver(); 它对我有用,您必须先初始化浏览器,然后才能进入步骤