Когда я запускаю Selenium с TestnG, я получаю НЕПРАВИЛЬНУЮ КОНФИГУРАЦИЮ: BeforeClass setup? - PullRequest
0 голосов
/ 18 апреля 2019

@ BeforeClass Я получаю ошибки null null Я полагаю, что это что-то с моим до класса. Как насчет необязательных они вам нужны? НЕДОСТАТОЧНАЯ КОНФИГУРАЦИЯ: @BeforeClass setUp (null, null) Я пытался добавить различные зависимости maven, возможно, из-за версии селеном, она все еще не будет работать.

    public class Practice {

     WebDriver driver;
    //Check this ont out
   @BeforeClass(alwaysRun = true)
    @Parameters({ "browser", "url" })
    public void setUp(@Optional("browser") String browser, @Optional("url") String url)  {
        BaseTest base = new BaseTest(browser, url);
        driver = base.getDriver();

    }

@Test
public void Check() {
    try {
        System.out.println("Passed Test case...");

        Assert.assertTrue(driver.getTitle().contentEquals("Google"));

        } catch (Exception ee) {
        System.out.println("NOOOOO ");
        ee.printStackTrace();

        Assert.assertEquals("noooo " + ee, "iT SHOULD NOT fAIL");
    }

}

public class Selen {

private WebDriver driver;
private String browser;
private String url;


public Selen(String browser, String url) {
    this.browser = browser;
    this.url = url;

    if (browser.equalsIgnoreCase("firefox")) {

        System.setProperty("webdriver.firefox.marionette",
                "C:\\Users\\geckodriver.exe");

        final FirefoxProfile firefox = new FirefoxProfile();


        driver = new FirefoxDriver();

        driver.get(url);

    }

    else if (browser.equalsIgnoreCase("chrome")) {
        // set path to chromedriver.exe
        System.setProperty("webdriver.chrome.driver", "C:\\Drivers\\chromedriver.exe");

        ChromeOptions options = new ChromeOptions();
        options.addArguments("--enable-automation", "test-type=browser", "--disable-plugins", "--disable-infobars",
                "--disable-notifications", "start-maximized");
        driver = new ChromeDriver(options);
        driver.get(url);

    }

    else if (browser.equalsIgnoreCase("Edge")) {
        // set path to Edge.exe
        System.setProperty("webdriver.edge.driver", ".\\MicrosoftWebDriver.exe");

        driver = new EdgeDriver();
        driver.get(url);
    } else {

    }


}

public String getBrowser() {
    return this.browser;
}

public String getBaseUrl() {
    return this.url;
}

public WebDriver getDriver() {
    return this.driver;
}

@AfterClass
public void tearDown(WebDriver driver) {
    quitDriver(driver);
}

protected static void quitDriver(WebDriver driver) {
    try {
        if (driver != null) {
            driver.quit();
        }
    } catch (Exception ee) {
        System.out.println("Failed: " + ee);
        ;
    }

}

**Failed Configuration**

[RemoteTestNG] detected TestNG version 6.14.3
Check() test case...
There was a problem: 
java.lang.NullPointerException
    at com.seleniumae.exercise.Practice.Check(Practice.java:44)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:583)
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:719)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:989)

TeNg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
  <test thread-count="5" name="Test">
  <parameter name="browser" value= "Chrome" />
   <parameter name="url" value="https://www.google.com/"/>
    <classes>
      <class name="com.seleniumae.exercise.Practice"/>
      <class name="com.seleniumae.exercise.Practice1"/>
      <class name="com.seleniumae.exercise.Practice2.java"/>
    </classes>
  </test> <!-- Test -->
  <test thread-count="5" name="Test">
  <parameter name="browser" value ="Firefox" />
   <parameter name="url" value="https://www.google.com/"/>
    <classes>
     <class name="com.seleniumae.exercise.Practice"/>
      <class name="com.seleniumae.exercise.Practice1"/>
      <class name="com.seleniumae.exercise.Practice2"/>
    </classes>
  </test> <!-- Test -->
  <test thread-count="5" name="Test">
  <parameter name="browser" value="InternetExplore" />
  <parameter name="url" value="https://www.google.com/"/>
    <classes>
     <class name="com.seleniumae.exercise.Practice"/>
      <class name="com.seleniumae.exercise.Practice1"/>
      <class name="com.seleniumae.exercise.Practice2.java"/>
    </classes>
  </test> <!-- Test -->

</suite> <!-- Suite -->

Проблема может заключаться в том, что браузер принимает один параметр, такой как chrome, когда это должен быть другой параметр.

1 Ответ

0 голосов
/ 18 апреля 2019

Синтаксис для определения @ Дополнительная аннотация:

public void setUp (@Optional ("browser_name") Строковый браузер, @Optional ("site_name") String url)

И вы реализуете следующим образом без использования @Optional ("значение")

public void setUp (@Optional String browser, @Optional String url) выдает MalformedURLException {

TestNG.xml - напишите параметры, как показано ниже

<suite name="Suite"> 
<test thread-count="5" name="Test"> 
<parameter name="url" value="https://www.google.com/"/> 
<parameter name="browser" value= "Chrome" />

Примечание. TestNG обеспечивает гибкость объявления параметров как необязательных. Когда мы объявляем параметр необязательным, и если определенный параметр не найден в вашем файле testng.xml, метод test получит значение по умолчанию, указанное в аннотации @Optional.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...