テストを実行すると例外が発生します。私はページ工場でセレンを使用しています。次のコードを実行すると、Webサイトが開き、以下の例外が発生します。私のテストケースではHomePage.ClickbtnCookieWarning()
を実行しません。ページファクトリでテストを実行しているときにNullPointerExceptionが発生する
誰かが私のコードが機能していない理由を理解できたら助けてくれますか?
失敗したコンフィギュレーション: org.openqa.selenium.support.pagefactory.DefaultElementLocator.findElement(DefaultElementLocator.java:69)で@BeforeTestセットアップjava.lang.NullPointerExceptionが org.openqa.selenium.supportで.Pagefactory.internal.LocatingElementHandler.invoke(LocatingElementHandler.java:38) com.sun.proxy。$ Proxy5.click(不明なソース) pageObjects.HomePage.ClickLoginLink(HomePage.java:57) myaccountsuite.TC1DefaultDeliveryAddDisplay .SetUp(TC1DefaultDeliveryAddDisplay.java:29)
ホームページページオブジェクト
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();
}
}
ログインページオブジェクト
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();
}
}
私のテスト
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がnullです。重要な点は、初期化されなかった理由を理解することです。たぶん@FindByが失敗しました。 –
'PageFactory.initElements'..as' driver = new FirefoxDriver(); HomePage HomePage = PageFactory.initElements(driver、HomePage.class);の前にwebdriverを初期化する必要があります。 login loginpage = PageFactory.initElements(driver、login.class); ' –
ありがとうございます。詳細を教えてください。なぜ@FindByが失敗したのか?私のコードで何か変わることを示唆していますか? – Prasa