无法调用“org.openqa.selenium.SearchContext.findElement(org.openqa.selenium.By)”,因为“this.searchContext”为空

问题描述 投票:0回答:3

下面的代码在

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();
    }
}
java selenium pom.xml page-factory
3个回答
0
投票

请在所有脚本中使用 TestBase 类中的相同 WebDriver 实例。 例如,在 LoginTest 类中删除 WebDriver 声明并修改行:

HomePage objHomePage = new HomePage(TestBase.driver);

在 TestBase 类中将 WebDriver 实例设置为静态。


0
投票

WebDriver 驱动程序;您刚刚声明,因此其无效。

public class LoginTest extends TestBase { //注释掉这个,因为你已经在扩展 TestBase // WebDriver 驱动程序;

//也不要提及驱动程序 //= new Chromedriver(); // 在//方法之前..写在这里。


0
投票
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(); 它对我有用,您必须先初始化浏览器,然后才能进入步骤

© www.soinside.com 2019 - 2024. All rights reserved.