我首次實現了POM模型sleneium。Selenium POM模型:java.lang.NullPointerException錯誤。無法輸入webelements的值或選擇元素
我正在使用骨架函數來初始化我的WebDriver。這是如下:
File pathToBinary = new File("<path>\firefox.exe");
FirefoxBinary binary = new FirefoxBinary(pathToBinary);
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("network.proxy.http", "<proxyaddress>");
profile.setPreference("network.proxy.http_port", "<portnumber>");
driver = new FirefoxDriver(binary, new FirefoxProfile());
driver.manage().window().maximize();
我的應用程序正確地盯着了,我才能夠登錄。但是當我遍歷一個不確定的鏈接時,我收到java.lang.NullPointerException。
我推斷了這個問題,因爲它是由於所有類(不同頁面)的對象在selenium suite的lauch期間被初始化並且因此我的元素類在第二或第三位執行而未被初始化。
以下代碼的第一行用於獲取驅動程序實例,其餘代碼用於創建對象。
WebDriver driver = Driver.AppDriver.getInstance();
FirstClass obFirstClass = new FirstClass();
SecondClass objSecondClass = new SecondClass();
ThirdClass objThirdClass = new ThirdClass();
使用objFirstClass,我可以登錄到我的系統並驗證我的登錄。 使用objSecondClass,我可以打印字符串來表示登錄成功。 但使用objThirdClass,我無法輸入WebElements或Select對象的值。
它給Null異常錯誤。
public class TestClass
{
WebDriver driver = Driver.AppDriver.getInstance();
FirstClass obFirstClass = new FirstClass();
SecondClass objSecondClass = new SecondClass();
ThirdClass objThirdClass = new ThirdClass (driver);
@Test(priority=2)
public void method()
{
objThirdClass.action1();
System.out.println("after action"); //-> This line is being printed
objThirdClass.action2(param1, param2, param3);
}
}
public class ThirdClass {
WebDriver driver = Driver.AppDriver.getInstance();
public ThirdClass(WebDriver _driver){
//This initElements method will create all WebElements
driver = _driver;
PageFactory.initElements(driver, this);
}
@FindBy(xpath=<xpath>)
WebElement elementCreate;
@FindBy(id=<id1>)
Select selectElement1;
@FindBy(id=<id2>)
Select selectElement2;
@FindBy(id=<id3>)
Select selectElement3;
@FindBy(id="submit")
WebElement elementSubmit;
public void action1()
{
JavascriptExecutor executor2 = (JavascriptExecutor)driver;
executor2.executeScript("arguments[0].click();", elementCreate);
System.out.println("Create link found");
}
public void setElement1(String str1)
{
selectElement1.selectByVisibleText(str1);
}
public void setElement1(String str2)
{
selectElement2.selectByVisibleText(str2);
}
public void setElement1(String str3)
{
selectElement3.selectByVisibleText(str3);
}
public void submit()
{
submit.click();
}
public void action2(String string1, String string2, String string3,)
{
this.setElement1(str1);
this.setElement2(str2);
this.setElement3(str3)
this.submit();
}
}
大概創建[gist](https://gist.github.com/),並展示如何儘可能實例化所有三個對象並縮小原因 – Saifur
連接的Gist鏈接 – Abhinav
https://gist.github。 com/anonymous/29246c0de32f9290388e#file-gistfile1-txt – Abhinav