我在testng xml文件中有两个“test”,所有都是并行运行我的问题是我在Webdriver.quit()
注释中调用@AfterSuite
方法。但它只关闭最后创建的浏览器实例并非所有已打开的浏览器。
当我调用@AfterTest
注释时,它会被关闭。
我在基类中创建了驱动程序并在测试类中扩展。
用于创建驱动程序实例的代码。
@BeforeClass @参数({ “设备名称”, “platformName”, “platformVersion”, “UDID”, “browserName”, “browserVersion”, “nodeIP”, “nodePort”}) public void startBrowser(String deviceName,String platformName,String platformVersion,String udid,String browserName,String browserVersion,String nodeIP,String nodePort)
{
DesiredCapabilities capabilities =DesiredCapabilities.chrome();
System.setProperty("webdriver.chrome.driver", "chromeDriverPath");
ChromeOptions options = new ChromeOptions();
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
driver = new ChromeDriver(capabilities);
}
任何人都可以帮助我..
答案 0 :(得分:0)
每个套房都会调用一次AfterSuite。您在上面显示的是一个并行执行两个测试的套件。您需要确保您的驱动程序是线程安全的。
在<test>
标记结束后调用AfterTest - 因此,如果特定于某个线程,您的webdriver将被关闭。
如果你想在aftersuite中关闭所有webdriver,你需要建立一个webdrivers列表并单独关闭每个webdriver。
答案 1 :(得分:0)
因为你有2 <test>
,所以TestNG正在创建2个实例(使用相同的套件后方法)。
但是testng认为套件方法在套件中是单一的,只会调用一次(它找到的第一个)。
这就是为什么它使用后测试方法,看起来是你应该使用的方法。
顺便说一句,因为你想在套件方法中关闭驱动程序,我想你是在一个前套件方法中创建的,它不应该出于同样的原因。你能详细说明你在哪里/如何创建驱动程序?