gpt4 book ai didi

java - Selenium WebDriver - 多个 Java 类

转载 作者:行者123 更新时间:2023-12-01 07:46:20 25 4
gpt4 key购买 nike

Selenium 新手

我有一个基类,它将启动webdriver。以下页面可用于创建契约(Contract)。

登录->选择计划->添加场所->添加详细信息

    public class BaseClass {
public WebDriver driver;
public WebDriverWait wait;

public WebDriver getDriver() {
return driver;
}

@BeforeClass(description = "Class Level Setup!")
public void setup() {
// Create a Chrome driver. All test classes use this.
System.setProperty("webdriver.chrome.driver", "/Selenium/chromedriver");
driver = new ChromeDriver();

// Create a wait. All test classes use this.
wait = new WebDriverWait(driver, 15);

// Maximize Window
driver.manage().window().maximize();
}

}

和Login.Test

    public class LoginTest extends BaseClass {

@Test(priority = 0, description="This TC is for Senoko login")
void validateLogin() {
driver.get("https://url domain/index");

WebElement email = driver.findElement(By.id("userid_txt"));
WebElement password = driver.findElement(By.id("password_txt"));
WebElement login = driver.findElement(By.id("submitBtn"));
email.sendKeys("a01");
password.sendKeys("test123");
login.click();
HouseholdCheck house=new HouseholdCheck();
house.houseCheck();
}

}

到目前为止,工作正常。在 validateLogin() 方法中,调用 houseCheck 方法,这里我得到了 NullPointerException

  public class HouseholdCheck extends BaseClass {

@Test
void houseCheck() {
System.out.println("=====" + driver);
driver.get("https://a-sit.aspx?source=CSP&key=1");
WebElement radio1 = driver.findElement(By.xpath("//input[@name='resbiz' and @value='households']"));
WebElement radio2 = driver.findElement(By.xpath("//input[@name='resbiz' and @value='business']"));
radio1.click();
WebElement radbutton = driver.findElement(By.xpath("//button[contains(.,'Continue')]"));
radbutton.click();
PlanSelect plnslct = new PlanSelect();
plnslct.planSelect(driver);
}

}

HouseholdCheck类中,无法访问driver。给出NullPointerException。请指导我,如何将 driver 传递到后续类(class)?如果一个类扩展了BaseClass,为什么该类无法获取驱动程序对象?

最佳答案

HouseholdCheck house = new HouseholdCheck(); 中,您创建 BaseClass 的新实例,其中 driver 从未初始化。您将 houseCheck() 作为方法调用,而不将其作为测试运行,因此 setup() 不会被执行。

一种解决方案是使驱动程序静态化

private static WebDriver driver;

public static WebDriver getDriver() {
return driver;
}

关于java - Selenium WebDriver - 多个 Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51516847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com