Я получаю исключение, когда запускаю свой тест. Я использую селен с фабрикой страниц. Когда я запустил следующий код, он откроет сайт и завершит сбой с исключением ниже. он не выполняет HomePage.ClickbtnCookieWarning()
в моем тестовом примере.NullPointerException при запуске моего теста с фабрикой страниц
Может кто-то, пожалуйста, помогите мне понять, почему мой код не работает?
FAILED КОНФИГУРАЦИИ: @BeforeTest SetUp java.lang.NullPointerException на org.openqa.selenium.support.pagefactory.DefaultElementLocator.findElement (DefaultElementLocator.java:69) на org.openqa.selenium.support .pagefactory.internal.LocatingElementHandler.invoke (LocatingElementHandler.java:38) на com.sun.proxy. $ Proxy5.click (Unknown Source) в 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 не удалось. –
вам нужно инициализировать webdriver перед 'PageFactory.initElements'..as' driver = new FirefoxDriver(); HomePage HomePage = PageFactory.initElements (driver, HomePage.class); Login loginpage = PageFactory.initElements (driver, login.class); ' –
Спасибо. Не могли бы вы дать мне более подробную информацию? Любая идея, почему @FindBy не удалось? Вы предлагаете что-либо изменить в моем коде? – Prasa