第二类的tests.xml没有执行

时间:2016-11-16 17:51:40

标签: java xml testing selenium-webdriver testng

我创建了2个单独的类来测试网页。但是,不幸的是,当我将它们都添加到testing.xml时,只有一个执行而另一个不执行。即使在XML中将preserve-order =“true”parallel =“false”设置为浏览器后,浏览器也会并行打开。我很困惑,我做错了。

这是我的XML文件:

'use strict';
const countChar = (string, ch) => string.split(ch).length - 1;
const countBs = string => countChar(string, 'B');

console.log(countBs('BBC'));
console.log(countChar('kakkerlak', 'k'));

loginOne如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" preserve-order="true" parallel="false">
  <test name="Test">
    <classes>
      <class name="TestServiceNow.loginOne"/>
      <class name="TestServiceNow.loginTwo"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->

loginTwo如下:

package TestServiceNow;
import org.testng.annotations.Test;
import ServiceNow.login;
public class loginOne extends loginTest{
    @Test
    public void test_Login(){
    //Create Login Page object
    objLogin = new login(driver);
    //login to application
    objLogin.loginGurukula("admin", "admin");
    }
}

基类如下:

public class loginTest {     DesiredCapabilities capabilities = DesiredCapabilities.chrome();     文件文件=新文件(“C:/Users/gattu_000/Documents/selenium-java-3.0.0-beta2/chromedriver_win32/chromedriver.exe”);     WebDriver驱动程序;     登录objLogin;

import org.testng.annotations.Test;
import ServiceNow.login;
public class loginTwo extends loginTest{
    @Test
      public void test_Login_Fail(){
          //Create Login Page object
          objLogin = new login(driver);
          //login to application
          objLogin.loginGurukula("admin", "admin1");
    }
}

结果如下 enter image description here

编辑后 enter image description here

3 个答案:

答案 0 :(得分:0)

您正在通过loginOne和loginTwo扩展loginTest。但是在loginTest中你初始化了你的驱动程序。这就是两个浏览器正在打开的原因。要解决此问题,您可以在@BeforeTest或@BeforeSuite等设置方法中初始化驱动程序。举个例子,这是一个代码片段 -

 @BeforeSuite
 public void a() {
     driver = new ChromeDriver(capabilities);
     System.out.println("Before suite called");
 }

像往常一样做其他事情,除了初始化部分。

修改

我错过了什么。您正在使用后测试方法关闭驱动程序。要正确运行测试,请从后测试方法中删除driver.close()并将其放置在aftereSuite部分。

答案 1 :(得分:0)

XML应该是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" preserve-order="true">
  <test name="Test">
    <classes>
      <class name="TestServiceNow.loginOne"/>
    </classes>
  </test> <!-- Test -->
  <test name="Test1">
    <classes>
      <class name="TestServiceNow.loginTwo"/>
    </classes>
  </test>
</suite> <!-- Suite -->

要启动浏览器两次,我们需要进行2次单独的测试。 (可能这可能是许多解决方案中的一种)

答案 2 :(得分:0)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Selenium Test Suite">
<test name="Selenium Test Suite">
<classes>
<class name="packagename.classname1"/>
<class name="packagename.classname1"/>
</classes>
</test> 
</suite>

which is proper. if you getting null point don't use driver in all the class. because of that only you are getting null pointer i guess.