[英]not able to access parent class object properties in child class in Java
我的問題很簡單,我有父類,並且在那里創建了一個 webdriver 類的新驅動程序對象 在我的子類中,我可以訪問驅動程序對象,但它的值為 null 我無法訪問對象屬性
public class BaseTest {
public static WebDriver driver;
@BeforeTest
@Parameters("browser")
public void VerifyPageTitle(String browser)
{
if(browser.equalsIgnoreCase("chrome")){
System.setProperty("webdriver.chrome.driver","C://chromedriver_win32(1)//chromedriver_win32//chromedriver.exe");
driver = new ChromeDriver();
}
if(browser.equalsIgnoreCase("IE")){
System.setProperty("webdriver.ie.driver","C://IEDriverServer_x64_3.3.0//IEDriverServer.exe");
driver = new InternetExplorerDriver();
}
driver.manage().window().maximize();
}
}
在我的子類代碼中
public class SignPageTest extends BaseTest{
SignPage obj ;
Boolean stu;
@Test
public void navigateToSignPage(){
obj = new SignPage(driver);
stu = obj.navigateToSignIn();
}
@Test(priority=2)
public void getHandles(){
stu = obj.handlingWindows();
}
}
由於我的驅動程序未初始化,我得到空指針 所以請告訴我簡單訪問超類對象屬性的方法
當我將我的驅動程序設為靜態時,我可以在所有其他類中訪問它的屬性,但我不希望它是靜態的
問題在於您的測試代碼。
您正在通過@BeforeTest
注釋方法初始化WebDriver
實例。 TestNG的調用@BeforeTest
每方法僅ONCE <test>
標記。 所以下面的組合(我猜你有什么)會在第二個類的@Test
方法中導致NullPointerException
。
SignPageTest
擴展BaseTest
並假設您有另一個名為SomeFlowTest
類,它也擴展了BaseTest
SignPageTest
和SomeFlowTest
的<test>
。 這將導致@BeforeTest
只為SignPageTest
(或) SomeFlowTest
執行一次(取決於它們在<test>
標簽中出現的順序),因為這兩個類都從同一個基類擴展。 所以一旦TestNG的執行VerifyPageTitle()
通過SignPageTest
它不會執行通過相同的方法SomeFlowTest
等等WebDriver
例如SomeFlowTest
為空。
要解決此問題, @BeforeTest
更改為@BeforeClass
(每個測試類執行一次)或@BeforeMethod
(每個@Test
方法執行一次)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.