在eclipse中运行带有多个类的testNG.xml时,WebDriver窗口未关闭

时间:2016-11-24 13:27:57

标签: eclipse selenium testng testng-eclipse

我有一个包含10个以上课程的testNG套件。当我将testNG.xml作为套件启动时,浏览器(ff)在进入第二类之前没有关闭,我已经习惯打开浏览器并在每个类中关闭它。我已经测试了它只给了一个类浏览器关闭。请查看以下代码@AfterTest

@BeforeClass(alwaysRun = true)
public void setUp() throws Exception {
driver = new FirefoxDriver();
baseUrl = "http://www.example.com";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}

@Test(priority=0)
public void testActivityMasterDBCheck() throws Exception {
--------------------
--------------------
@AfterTest
public void tearDown() throws Exception {
driver.quit();
String verificationErrorString = verificationErrors.toString();
if (!"".equals(verificationErrorString)) 
{
fail(verificationErrorString);
}
}

and XML is 

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

2 个答案:

答案 0 :(得分:1)

使用@AfterClass注释,如下所示:

    FirefoxDriverService firefoxDriverService = FirefoxDriverService.CreateDefaultService(@"C:\\Test3", "geckodriver.exe");
    firefoxDriverService.FirefoxBinaryPath = @"C:\Program Files (x86)\Mozilla Firefox\firefox.exe";


    var driver = new FirefoxDriver(firefoxDriverService);
    driver.Navigate().GoToUrl("http://toolsqa.wpengine.com/handling-alerts-using-selenium-webdriver/");
    driver.Manage().Window.Maximize();
    IWebElement element = driver.FindElement(By.XPath("//button[contains(@onclick,'promptConfirm')]"));

    try
    {
        IJavaScriptExecutor executor = (IJavaScriptExecutor)driver;

        executor.ExecuteScript("arguments[0].click();", element);
    }
    catch (InvalidOperationException eee)
    {
        int dd = 23;

    }


    driver.SwitchTo().Alert().SendKeys("Accepting the alert");

答案 1 :(得分:0)

执行@AfterClass和(alwaysRun = true)。您的浏览器可能无法关闭的原因很简单,您使用一个驱动程序实例来启动浏览器。所以一旦你的执行结束,下一个类将开始执行,但你还没有结束。所以尝试使用@AfterClass或@AfterMethod。我建议@AfterClass为,你正在启动你的驱动程序@BeforeClass

希望有所帮助。