构造函数调用时Driver未生效,POM结构中URL无法加载问题排查
解决POM结构中WebDriver空指针异常(NullPointerException)
核心问题:构造函数赋值顺序错误
你的S1LandingPage构造函数里的赋值语句写反了,导致类的driver成员变量始终为null:
driver = this.driver; // 错误操作:将类的空成员变量赋值给参数,成员变量仍为null
正确的做法是把外部传入的driver实例赋值给类的成员变量:
this.driver = driver; // 正确操作:绑定外部传入的WebDriver实例
修正后的S1LandingPage代码
public class S1LandingPage { // 移除不必要的Sample1继承,页面类无需依赖主类 WebDriver driver; public S1LandingPage(WebDriver driver) { this.driver = driver; // 修正赋值逻辑 PageFactory.initElements(driver, this); } @FindBy(id="userEmail") WebElement Uname; @FindBy(id="userPassword") WebElement pw; @FindBy(id="login") WebElement submit; public void login(String email, String passwrd) { Uname.sendKeys(email); pw.sendKeys(passwrd); submit.click(); } public void Goto() { driver.get("https://rahulshettyacademy.com/client/"); } }
额外优化点
- 移除不必要的继承:页面类
S1LandingPage不需要继承主类Sample1,继承会引入不必要的依赖,不符合POM的解耦设计。 - 统一配置WebDriver:主类中已经设置了窗口最大化和隐式等待,
Goto方法里的重复配置可以删除,避免冗余代码。
当构造函数赋值修正后,driver成员变量将正确指向主类中初始化的ChromeDriver实例,调用driver.get()时就不会抛出NullPointerException了。
内容的提问来源于stack exchange,提问作者Sana Sameer
相关产品推荐
相关产品推荐

