基类:
protected WebDriver driver;
protected String URL = "https://www.example.com/";
public static String SignupURL = "https://www.example.com/login";
public Login loginpage;
@BeforeClass
public void setup()
{
System.setProperty("webdriver.chrome.driver","E:\\Selenium-Webdriver\\Chrome_Driver\\chromedriver.exe");
driver = new ChromeDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.navigate().to(URL);
loginpage = PageFactory.initElements(driver,Login.class);
}
登录类:
protected WebDriver driver;
public Login(WebDriver driver) {
this.driver = driver;}
public Login Method1()
{
//Logic
}
logintest类:
public class LoginTest extends Base {
@Test
public void method1()
{
setup() //Have to Call it
//Logic
}
@Test
public void method2
{
setup() //Have to Call it
//Logic
}
}
问题是为什么需要为测试类中的每个方法调用setup()方法。
我已经在扩展类,然后驱动程序应该自动调用,但它不是。当我不调用setup()时,就会得到nullpointer异常,如果我调用它,系统就会为每个方法打开新的浏览器。
2条答案
按热度按时间yebdmbv41#
您正在基类中使用@beforeclass,如果将其更改为@beforesuite,则无需调用该安装方法。一般来说,我会在我的基类中使用@beforesuite,并将其扩展到所有测试类,以便在该浏览器上工作。
下面一个对我有用
谢谢你,穆拉里
3bygqnnd2#
问题是
@BeforeClass
未命中(alwaysRun=true)
. 所以如果,在你的基类中,你写@BeforeClass(alwaysRun=true)
. 那么就不需要在其他类中调用setup。