子类不继承父类变量

问题描述 投票:0回答:1

我是硒的新手。我尝试创建一个自动化测试项目。在那里,我为每个网页创建了类,在我的测试包中,我创建了一个 baseTest 类,在其中启动浏览器并打开主页,以及用于其他方法的另一个类。我还为每个页面创建了测试类。现在,当我进入主页时,驱动程序为空。但是每个测试类都扩展了baseTest。为什么会发生这种情况?

package utilities;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chromium.ChromiumDriver;

public class utility {
    public WebDriver udriver;
    
    public void setDriver(WebDriver driver)
    {
        udriver =driver;
    }
    
    public String getTitle() {
        return udriver.getTitle();
        
    }
    
    public void clickEl(WebElement element) {
        element.click();
    }

}

首页类

package Pages;

import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;

import utilities.utility;

public class HomePage extends utility {

    @FindBy(xpath = "//a[normalize-space()='Gmail']")
    WebElement gmailBtn;

    public String homePageTitle() {
        return getTitle();
    }

    public void clickOnGmailBtn() {
        clickEl(gmailBtn);
    }

}

基础测试

package tests;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;

import utilities.utility;

public class BaseTest {
    protected WebDriver driver;
    utility utility =new utility();
    
    @BeforeTest
    public void initializeBrowser()
    {
        driver= new ChromeDriver();
        driver.manage().window().maximize();
        driver.get("https://www.google.com/");
        utility.setDriver(driver);
        
    }
    @AfterTest
    public void tearDown(){
        driver.quit();
    
    }
}

测试主页

package tests;

import org.testng.annotations.Test;

import Pages.HomePage;
import utilities.utility;

public class TestHomePage extends utility{
    HomePage homePage= new HomePage();
    @Test
    public void TilteTest() {
    
        System.out.println(homePage.homePageTitle());
    }

}

我尝试在每个方法之前创建一个实用程序实例,但没有成功。我希望将在 baseTest 类中创建的驱动程序表单传递给实用程序类,并且每个 webPage 类都可以访问它。

java selenium-webdriver automated-tests testng
1个回答
0
投票

要实现此功能,您需要在 Utility 类中使驱动程序静态化。

public class Utility {
   public static WebDriver udriver;

   public static void setDriver(WebDriver driver) {
      udriver = driver;
   }
}
© www.soinside.com 2019 - 2024. All rights reserved.