首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >配置失败:@AfterMethod tearDown

配置失败:@AfterMethod tearDown
EN

Stack Overflow用户
提问于 2014-03-06 00:57:59
回答 3查看 13.2K关注 0票数 0

我是selenium webdriver的新手。我正尝试在两个浏览器上并行运行Testng Test,但iam遇到了问题,出现了以下错误。当你试图跑的时候。

代码语言:javascript
复制
package rough;


import org.testng.annotations.AfterMethod;
import org.testng.annotations.Optional;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeMethod;
import org.testng.Assert;

import java.util.regex.Pattern;
import java.util.concurrent.TimeUnit;

import org.junit.*;

import static org.hamcrest.CoreMatchers.*;

import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.support.ui.Select;

public class Browsers {
  private WebDriver driver;
  private String baseUrl;
  private boolean acceptNextAlert = true;
  private StringBuffer verificationErrors = new StringBuffer();

  @BeforeMethod
  public void tearDown1() throws Exception {
        System.out.println("Hello starting");
  }
  @Parameters("BROWSER")
public void setUp(@Optional String BROWSER) throws Exception {

    //To run test case parallely in different browsers
            if(BROWSER.equalsIgnoreCase("FF"))
            {
            //System.out.println(“Firefox driver would be used”);
            driver = new FirefoxDriver();
            }
            else
            if(BROWSER.equalsIgnoreCase("IE"))
            {
            //System.out.println(“Ie webdriver would be used”);
                System.setProperty("webdriver.ie.driver", "g:/Selenium Jar Files/IEDriverServer.exe");
            driver = new InternetExplorerDriver();
            }

   // driver = new FirefoxDriver();
    baseUrl = "http://book.theautomatedtester.co.uk/";
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
  }

  @Test
  public void test() throws Exception {
    driver.get(baseUrl + "/chapter1");
    driver.findElement(By.id("radiobutton")).click();
    new Select(driver.findElement(By.id("selecttype"))).selectByVisibleText("Selenium RC");
  }

  @AfterMethod
   public void tearDown() throws Exception {
    driver.quit();
  String verificationErrorString = verificationErrors.toString();
 if (!"".equals(verificationErrorString)) {
   Assert.fail(verificationErrorString);
  }
  }

  private boolean isElementPresent(By by) {
    try {
      driver.findElement(by);
      return true;
    } catch (NoSuchElementException e) {
      return false;
    }
  }

  private boolean isAlertPresent() {
    try {
      driver.switchTo().alert();
      return true;
    } catch (NoAlertPresentException e) {
      return false;
    }
  }

  private String closeAlertAndGetItsText() {
    try {
      Alert alert = driver.switchTo().alert();
      String alertText = alert.getText();
      if (acceptNextAlert) {
        alert.accept();
      } else {
        alert.dismiss();
      }
      return alertText;
    } finally {
      acceptNextAlert = true;
    }
  }
}

下面是XML

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="True">
  <test name="Test">
  <parameter name = "BROWSER" value="FF"></parameter>
    <classes>
          <class name="rough.Browsers"/>
    </classes>
    <test name="Test">
    <parameter name = "BROWSER" value="IE"></parameter>
    <classes>
       <class name="rough.Browsers"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->

我正在获取堆栈跟踪

代码语言:javascript
复制
[TestNG] Running:
  C:\Users\Administrator\AppData\Local\Temp\testng-eclipse--757511090\testng-customsuite.xml

Hello starting
FAILED CONFIGURATION: @AfterMethod tearDown
java.lang.NullPointerException
    at rough.Browsers.tearDown(Browsers.java:65)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84)
    at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:564)
    at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:213)
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:786)
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
    at org.testng.TestRunner.privateRun(TestRunner.java:767)
    at org.testng.TestRunner.run(TestRunner.java:617)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
    at org.testng.SuiteRunner.run(SuiteRunner.java:240)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1224)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1149)
    at org.testng.TestNG.run(TestNG.java:1057)
    at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175)

请帮帮我

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-06 01:19:59

真正的错误是NullPointerException。我将猜测,在您的设置中(或在您的测试中)的某个地方,您抛出了一个错误,然后您试图访问驱动程序,但它是空的。

或者在调用driver.close()之前进行null检查,或者确保驱动程序永远不为null (我更喜欢第一个选项)。

票数 1
EN

Stack Overflow用户

发布于 2017-05-05 21:07:53

我收到了同样的错误。我的问题是,我试图让@afterMethod中的驱动程序变得安静。我关闭了驱动,而不是退出,问题得到了解决。

票数 0
EN

Stack Overflow用户

发布于 2019-06-17 17:01:17

我也面临着同样的问题,为了解决这个问题,我将chromedriver更新到我的系统中。实际上,需要检查浏览器和浏览器驱动程序的兼容性。

例如,如果我使用Chrome74,那么我将更新我的驱动程序以支持Chrome64。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22204211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档