Ich habe unten einen Beispielcode gepostet, den ich bisher gemacht habe, und ich erhalte eine Ausnahme java.lang.NullPointerException.

Basisklasse:

public class TestBase {
    public static WebDriver driver= null;

    @BeforeSuite
    public void initialize(){
        System.setProperty("webdriver.chrome.driver","...chromedriver_win32\\chromedriver.exe");
        WebDriver driver=new ChromeDriver();
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        driver.get("abcd.com");
    }

    @AfterSuite
    public void TearDownTest()
    {
        TestBase.driver.quit();
    }
}

Anmeldeseite:

public class LoginPage {

    WebDriver driver;

    public LoginPage(WebDriver driver)
    {
        this.driver= driver;
    }

    @FindBy(how=How.XPATH, using="//*[@id='email_id']") WebElement EmailTextBox;
    @FindBy(how=How.XPATH, using="//*[@id='password']")WebElement PassworTextBox;
    @FindBy(how=How.XPATH, using="//*[@id='frm_login']/div[4]/input") WebElement LoginButton;

    public void setemail(String strmail)
    {
        EmailTextBox.sendKeys(strmail);
    }

    public void setpwd(String strpwd)
    {
        try
        {
            PassworTextBox.sendKeys(strpwd);
        }
        catch (TimeoutException e) 
        {
            System.out.println("Time out exception " + e);
        } 
        catch (ElementNotSelectableException e) {
            System.out.println("Element not selectable exception " + e);
        } catch (NoSuchElementException e) {
            System.out.println("No such element found " + e);
        } catch (ElementNotVisibleException e) {
            e.printStackTrace();
        } catch (Exception e) {
            System.out.println("Something Wrong " + e);
        }
    }

    public void ClickLoginBtn()
    {
        LoginButton.click();
    }
}

LoginTest-Klasse:

public class LoginTest extends TestBase{

    @Test
    public void init()
    {
        System.out.println("In the init method");
        LoginPage lg=PageFactory.initElements(driver, LoginPage.class);
        lg.setpwd("123123");
        lg.setemail("abc@gmail.com");
        lg.ClickLoginBtn();
    }
}

Ich erhalte das NullPointerException, während ich den Benutzernamen und das Passwort einstelle. Kannst du mir bitte Helfen?

Ich bin neu im POM mit PageFactory, daher habe ich keine Ahnung, wie ich es lösen soll, aber wenn mir jemand dabei helfen kann, wäre es eine große Hilfe für mich.

2
vijayateke 26 Juni 2019 im 12:44

3 Antworten

Beste Antwort

Sie sollten die WebDriver -Instanz, d. H. driver , nicht zweimal wie folgt initialisieren:

public static WebDriver driver= null;

Und

WebDriver driver=new ChromeDriver();

Behalten Sie die globale Deklaration wie folgt bei:

public static WebDriver driver= null;

Und ändern Sie die Zeile wie folgt:

driver=new ChromeDriver();
1
DebanjanB 26 Juni 2019 im 09:54

Versuchen Sie, nach driver.get("abcd.com"); eine Zeitüberschreitung hinzuzufügen, um sicherzustellen, dass die Seite vollständig geladen wurde, und finden Sie WebElements, die EmailTextBox und PassworTextBox definieren.
Oder verwenden Sie einen WebDriverWait wie diesen

new WebDriverWait(driver, 10))
   .until(ExpectedConditions.visibilityOf(By.id("someid")));
0
Ehcnalb 26 Juni 2019 im 09:49

Ich hoffe, Sie haben die Seitenfactory-Elemente so initialisiert

public LoginPage(WebDriver driver) {           
  this.driver = driver; 
  PageFactory.initElements(driver, this);
}

In Ihrer Testklasse würde ich platzieren

LoginPage lg = neue LoginPage (Treiber);

Read more here:
https://www.seleniumeasy.com/selenium-tutorials/page-factory-pattern-in-selenium-webdriver
0
Arjun Tandon 26 Juni 2019 im 10:42