我有2节课
1.BROWSER ---这个类有加载浏览器的方法,所以我可以在我的每个测试用例中调用2.LOCATORS - 这个类包含存储所有webelements的方法
3.NEW TEST-这是我的测试用例,其中我称之为“浏览器”和“定位器”类......
下面是我的浏览器类
浏览器类
package TestProject.TestProject;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class Browser {
WebDriver driver;
public Browser (WebDriver driver) {
this.driver = driver;
}
public WebDriver GetBrowser()
{
System.setProperty("webdriver.chrome.driver", "E:\\chromedriver.exe");
driver = new ChromeDriver();
String baseurl = "https:\\live.guru99.com\\index.php\\";
driver.get(baseurl);
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
return driver;
}
}
下面是我的Locator类
package TestProject.TestProject;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
public class Locators {
WebDriver driver;
//Locators
By mobile = By.xpath("//a[contains(.,'Mobile')]");
public Locators (WebDriver driver){
this.driver = driver;
}
public void mobile()
{
driver.findElement(mobile).click();
}
}
我的测试案例
package TestProject.TestProject;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeTest;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterTest;
public class NewTest {
WebDriver driver;
@BeforeTest
public void beforeTest() {
Browser load = new Browser(driver);
driver =load.GetBrowser();
}
@Test
public void VerifyMobile() {
Locators mobilemenu = new Locators(driver);
mobilemenu.mobile();
}
@AfterTest
public void afterTest() {
}
}
你得到NullPointerException
,因为你使用的是非初始化的WebDriver
下面的代码给你带来麻烦。你正在将null驱动程序传递给Browser
类...然后你可能用它做了一些事情,但你没有返回任何初始化的WebDriver
public class NewTest {
WebDriver driver;
@BeforeTest
public void beforeTest() {
Browser load = new Browser(driver);
load.GetBrowser();
}
试试这个:
public WebDriver GetBrowser() {
System.setProperty("webdriver.chrome.driver", "E:\\chromedriver.exe");
driver = new ChromeDriver();
String baseurl = "https:\\live.guru99.com\\index.php\\";
driver.get(baseurl);
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
return driver;
}
您将初始化的WebDriver
返回给您的测试,如下所示:
driver = load.GetBrowser();
这必然会给NullPointerException
,因为@BeforeTest
方法中的WebDriver对象尚未初始化,因此是空的。
Browser load = new Browser(driver);
这里,驱动程序对象尚未初始化。
建议:
不是调用GetBrowser()方法,而是在Browser类构造函数中初始化WebDriver对象,并继承Browser类,并在需要时使用WebDriver对象。