如何在 POM 设计中传递驱动程序详细信息



请在以下场景 1 中帮助我。我有一个基类和 2.2 页登录页面和主页 3.两个测试页面,我的问题是,从第一个测试页面我必须将驱动程序详细信息传递到第二个测试页面,但它没有发生。 包装绒球;

import org.openqa.selenium.WebDriver;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import Baseclass.Baseclass;
import Pages.Homepage;
import Pages.Loginpage;
public class Loginpom extends Baseclass {
public WebDriver driver;
public Loginpage lp;
public Homepage hp;
@BeforeTest
public void getd() {
driver=getdriver();
}
@Test
public void lpom() throws InterruptedException {
lp=new Loginpage(driver);
lp.login();
hp= lp.transfer();
}
}

//首页包 Pom;

import org.openqa.selenium.WebDriver;
import org.testng.annotations.Test;
import Baseclass.Baseclass;
import Pages.Homepage;
import Pages.Loginpage;
public class Homepom {
public WebDriver driver;
public Homepage hp;
public Loginpage lp;
@Test
public void hpom() {
System.out.println(driver);
hp.home();
}

}

您可以利用单例模式的使用,其中不需要传递对象,并且只在任何地方创建和使用单个WebDriver。我已经写了一个相同的片段,请检查是否有任何帮助。

private BasePage()
{
s = "I am singleTon Constructor ";
}
public static WebDriver getInstance()
{
if (driver == null)
driver = new WebDriver("Chrome");
return driver;
}

}

class WebDriver 
{
private String name ;
public WebDriver(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
}
class LoginPage
{
WebDriver d ;
public void OpenLoginPage()
{
System.out.println("Opening LoginPage");
}

public void showDriverName() {
System.out.println( d.getName());       
}
public WebDriver getDriver() {
WebDriver d1  =  BasePage.getInstance();
this.d =d1;
return d ;
}
}
class HomePage 
{
WebDriver d ; 
public WebDriver getDriver() {
WebDriver d = new WebDriver("Chrome");
this.d = d;
return d;
}
public void showDriverName() {
System.out.println(d.getName());
}
}

public class BaseClass {
public static void main(String[] args) {
HomePage p = new HomePage();
WebDriver d = p.getDriver();
p.showDriverName();
LoginPage l = new LoginPage();
WebDriver d2= l.getDriver();
l.showDriverName();

}
}

您可以将驱动程序详细信息从一个类传递到另一个类,如下所示:

类登录:

@Test
public void lpom() throws InterruptedException {
lp=new Loginpage(driver);
lp.login();
hp= lp.transfer();
}

班级家球:

public Homepom(WebDriver driver)
{
Homepom.driver = driver;
OR
this.driver = driver ;
}

在要为其调用驱动程序的类中,必须将驱动程序分配为参数化构造函数。因此,在您的代码中,必须为Homepom类分配带有Driver对象的参数化构造函数。

相关内容

最新更新