Ich erhalte eine Ausnahme, wenn ich meinen Test ausführe. Ich verwende Selen mit der Seitenfabrik. Wenn ich den folgenden Code starte, öffnet er die Webseite und scheitert mit Ausnahme unten. es führt die HomePage.ClickbtnCookieWarning()
in meinem Testfall nicht durch.NullPointerException bei der Ausführung meines Tests mit der Seiten-Factory
Kann mir bitte jemand helfen zu verstehen, warum mein Code nicht funktioniert?
FAILED CONFIGURATION: @BeforeTest SetUp java.lang.NullPointerException bei org.openqa.selenium.support.pagefactory.DefaultElementLocator.findElement (DefaultElementLocator.java:69) bei org.openqa.selenium.support .pagefactory.internal.LocatingElementHandler.invoke (LocatingElementHandler.java:38) bei com.sun.proxy. $ Proxy5.click (Unknown Source) bei pageObjects.HomePage.ClickLoginLink (HomePage.java:57) bei myaccountsuite.TC1DefaultDeliveryAddDisplay .SetUp (TC1DefaultDeliveryAddDisplay.java:29)
Homepage Seite Objekt
public class HomePage {
WebDriver driver;
public HomePage (WebDriver driver)
{
this.driver=driver;
}
@FindBy(id="ctl00_header_hdrCookieWarning_btnHideCookieWarning")
WebElement btnCookieWarning;
@FindBy(xpath=".//*@id='ctl00_masterContainerTop_Block_637_LoginView1_ulAnonymous']/li[2]/a")
WebElement LoginLink;
public void ClickbtnCookieWarning()
{
btnCookieWarning.click();
}
public void ClickLoginLink()
{
LoginLink.click();
}
}
Login-Seite Objekt
public class login {
WebDriver driver;
public login(WebDriver driver)
{
this.driver = driver;
}
@FindBy(id="ctl00_ContentPlaceHolderMain_container_container_Block_166_lgn1_UserName")
WebElement UserName;
@FindBy(id="ctl00_ContentPlaceHolderMain_container_container_Block_166_lgn1_Password")
WebElement Password;
@FindBy(id="ctl00_ContentPlaceHolderMain_container_container_Block_166_lgn1_LoginButton")
WebElement btn_LogIn;
@FindBy(id="ctl00_ContentPlaceHolderMain_container_container_Block_166_lgn1_txtAccount")
WebElement Account;
@FindBy(id="ctl00_ContentPlaceHolderMain_container_container_Block_166_lgn1_btnHomeBranch_3")
WebElement btn_Continue;
public void userLogin(String uname, String pass, String acc)
{
UserName.sendKeys(uname);
Password.sendKeys(pass);
btn_LogIn.click();
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
Account.sendKeys(acc);
btn_LogIn.click();
btn_Continue.click();
}
}
My Test
public class TC1DefaultDeliveryAddDisplay {
public WebDriver driver;
@BeforeTest(alwaysRun = true)
public void SetUp() {
HomePage HomePage = PageFactory.initElements(driver, HomePage.class);
login loginpage = PageFactory.initElements(driver, login.class);
driver = new FirefoxDriver();
driver.get("http://URL/");
HomePage.ClickbtnCookieWarning();
HomePage.ClickLoginLink();
loginpage.userLogin("[email protected]", "125", "Test");
}
LoginLink ist null. Der Schlüssel ist herauszufinden, warum es nicht initialisiert wurde. Vielleicht ist @FindBy fehlgeschlagen. –
Sie müssen den Webdriver initialisieren, bevor 'PageFactory.initElements'..as' driver = new FirefoxDriver(); HomePage HomePage = PageFactory.initElements (driver, HomePage.class); login loginpage = PageFactory.initElements (Treiber, login.class); ' –
Danke. Könnten Sie mir bitte mehr Details geben? Irgendeine Idee warum @FindBy fehlgeschlagen ist? Schlägst du irgendwas vor, um meinen Code zu ändern? – Prasa