TestNG Параметризация: NullPointerException при передаче типа браузера в Базовый класс - PullRequest
1 голос
/ 12 марта 2019

У меня есть базовый класс с методом для открытия моего URL, который в моих тестовых случаях называется @BeforeMethod. Метод принимает строковый аргумент для типа браузера, который определяет, какой браузер вызывается. Я пытаюсь установить параметр в моем файле запуска xml, который можно ввести в мой @BeforeMethod в качестве аргумента для метода openURL.

Вот мой XML-файл:

<?xml version="1.0" encoding="UTF-8"?>

<suite name="FullRegressionSuite" parallel="false">
<listeners>
<listener class-name="reporting.CustomReporter"></listener>
</listeners>
  <test name="Test">
    <parameter name ="browserType" value="Chrome"/>
    <classes>
      <class name="reporting.reporterTest"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->

Вот мои тесты:

@Listeners(CustomListener.class)
public class reporterTest extends Base {

      @Test
      public void testOne() {
          Assert.assertTrue(true);
      }

      @Test
      public void testTwo() {
          Assert.assertTrue(false);
      }

      @Parameters({ "browserType" })
      @BeforeMethod
      public void setUp(String browserType) throws InterruptedException {
          System.out.println(browserType);
          openURL(browserType);
      }

      @AfterMethod 
      public void tearDown() {
          driver.quit(); 
      }
}

Вот мой базовый класс:

public class Base {

public static WebDriver driver = null;

//CALL WEB BROWSER AND OPEN WEBSITE
public static void openURL(String browser) throws InterruptedException {

        //launches browser based on argument given
    try{
        if (browser == "Chrome") {
            System.setProperty("webdriver.chrome.driver", "/Users/rossdonohoe/Desktop/SeleniumJava/Drivers/chromedriver");
            driver = new ChromeDriver();
        }
        else if (browser == "Firefox") {
            System.setProperty("webdriver.gecko.driver", "/Users/rossdonohoe/Desktop/SeleniumJava/Drivers/geckodriver");
            driver = new FirefoxDriver();
        }
        else {
            System.out.println("Error: browser request not recognized");
        }

    driver.manage().deleteAllCookies();
    driver.manage().window().maximize();

    driver.get("https://www.google.com");

    }
    catch(Exception E) {
        E.printStackTrace();
    }
}
}

Мой @BeforeMethod определенно получает параметр, так как я печатаю его значение для проверки и получаю «Chrome» в консоли. Однако openURL завершается с ошибкой в ​​строке «удалить все файлы cookie» с исключением нулевого указателя (и моя строка «Ошибка: запрос браузера не распознан» печатается в консоли), указывая на то, что строка не достигает openURL в качестве аргумента. Может кто-нибудь видит, что я делаю не так?

1 Ответ

0 голосов
/ 12 марта 2019

Поскольку browser является строковой переменной, вам нужно использовать equals или contains или equalsIgnoreCase, чтобы проверить, является ли browser, который вы выбираете, "Chrome" или "Firefox".

Поэтому вам нужно использовать: if(browser.equals("Chrome")) и if(browser.equals("Firefox")) в качестве условий вместо условий, которые вы использовали.

...