我是硒的新手。我尝试创建一个自动化测试项目。在那里,我为每个网页创建了类,在我的测试包中,我创建了一个 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 类都可以访问它。
要实现此功能,您需要在 Utility 类中使驱动程序静态化。
public class Utility {
public static WebDriver udriver;
public static void setDriver(WebDriver driver) {
udriver = driver;
}
}