我创建了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");
}
}
答案 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.