您好我有三个课程文件。在头等舱中,只有一个测试用例用于登录 Gmail 帐户。其余类只有一个测试用例,两者都用于导航收件箱和已发送的项目。我创建了testng.xml
来运行这些多个类。现在问题是当第一堂课正在执行时,我可以登录 Gmail 帐户。但是当涉及到二等,我无法导航到收件箱,因为我没有在第2课和第3课中执行登录操作。
所以它给我一个错误Null Pointer Exception
。我知道我得到这个例外的原因。但我想只执行一次登录操作,但它应该可用于所有类,这意味着当我要执行第2类和第3类时,它不应该抛出错误。它应该继续从1级开始。我如何才能完成这项任务。
我google了很多。他们都没有帮助我。如果你有,请建议我。我也试过扩展我的班级。我没有结果。请指导我在哪里挣扎?
以下是我的testng.xml
<suite name="MynaTestCase">
<test name="order">
<classes>
<class name="myPackage.Login" />
<class name="myPackage.Inbox" />
<class name="myPackage.SentItems" />
</classes>
</test>
</suite>
以下是登录代码
@BeforeSuite(alwaysRun = true)
public void setup(){
System.setProperty("webdriver.chrome.driver", "/home/vadmin/workspace/samplepjt/lib/chromedriver");
driver = new ChromeDriver();
baseUrl = "http://www.google.com";
driver.get(baseUrl+"/");
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
System.out.println("Before suite executed");
}
@Test
public void LoginTest(){
driver.findElement(By.cssSelector("i.fa.fa-user-secret")).click();
driver.findElement(By.id("user_username")).clear();
driver.findElement(By.id("user_username")).sendKeys(username);
driver.findElement(By.id("user_password")).clear();
driver.findElement(By.id("user_password")).sendKeys(password);
driver.findElement(By.id("signInButton")).click();
}
这是Inbox.Java
@Test
public void testcase1()
{
driver.findElement(By.xpath("html/body/div[1]/div[2]/div/div/div/div[1]/div[4]/ul/li[8]/a/div/p")).click();
Assert.assertEquals(driver.findElement(By.xpath("html/body/div[1]/div[2]/div/div/div/div[2]/div/h4")).getText(), "Sections");
driver.findElement(By.name("commit")).click();
driver.findElement(By.xpath(".//*[@id='new_section']/div[3]/input")).submit();
}
答案 0 :(得分:0)
问题是您在Login类中定义了WebDriver,因此收件箱类不会看到它。
要解决这个问题,请创建一个抽象类,其中包括BeforeSuite
和AfterSuite
类,并使用它扩展每个测试类。
抽象类
public class MyAbstractClass
{
public WebDriver driver;
@BeforeSuite
public void beforeSuite() {
//...
this.driver = new ChromeDriver();
//...
}
@AfterSuite
public void afterSuite() {
//...
this.driver.quit();
//...
}
}
测试类
public class MyTestClass extends MyAbstractClass
{
@Test
public void myTest() {
this.driver.get("http://google.com");
}
}