Checkout our demo site to practice selenium https://magento.softwaretestingboard.com/

0 like 0 dislike
937 views
by The go-to Tester (218 points)
I have a test ng file in which i have used parameter. The parameter browser selects browser. Mt xml file is

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="none">
  <test name="Test">
  <parameter name="browser" value="FF"/>
    <classes>
      <class name="AllScripts.AutoCompleteDemo"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->

I get following error

Parameter 'browser' is required by @Configuration on method setUp but has not been marked @Optional or defined
in C:\Users\HOME\AppData\Local\Temp\testng-eclipse--345230923\testng-customsuite.xml
    at org.testng.internal.Parameters.createParameters(Parameters.java:154)
    at org.testng.internal.Parameters.createParameters(Parameters.java:361)
    at org.testng.internal.Parameters.createConfigurationParameters(Parameters.java:84)
    at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:202)
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:590)
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:823)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1131)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112)
    at org.testng.TestRunner.privateRun(TestRunner.java:778)
    at org.testng.TestRunner.run(TestRunner.java:632)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:366)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:361)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:319)
    at org.testng.SuiteRunner.run(SuiteRunner.java:268)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1225)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1150)
    at org.testng.TestNG.runSuites(TestNG.java:1075)
    at org.testng.TestNG.run(TestNG.java:1047)
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:126)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:137)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:58)

SKIPPED CONFIGURATION: @AfterMethod tearDown
SKIPPED: testAutocomplete

My code is

Autocompletedemo.java

public class AutoCompleteDemo extends Common1
{
    
    @Test
    public void testAutocomplete() throws Exception
    {
        //Load web page
        d.get("http://jqueryui.com/autocomplete/");
        assertEquals("Autocomplete | jQuery UI",d.getTitle());
        //Switch driver focus to frame
        d.switchTo().frame(0);
        //Type text
        d.findElement(By.id("tags")).sendKeys("a");
        List<WebElement> s=d.findElements(By.className("ui-menu-item"));
        System.out.println("No of suggestions is:"+s.size());
        System.out.println("************** Suggestion are ******************");
        for(WebElement e:s)
        {
            System.out.println(e.getText());
        }
        if(s.size()>=3)
        {
            for(int i=0;i<3;i++)
            {
                d.findElement(By.id("tags")).sendKeys(Keys.ARROW_DOWN);
                Thread.sleep(1000);
            }
            d.findElement(By.id("tags")).sendKeys(Keys.ENTER);
            
        }
        Thread.sleep(4000);
    }
 }

 Common1.java

public class Common1 {
    WebDriver d;
    @Parameters("browser")
    @BeforeMethod
    public void setUp(String browser) throws Exception
    {
        //Launch browser
        if(browser.equalsIgnoreCase("FF"))
        {
            System.setProperty("webdriver.gecko.driver", "C://Selenium driver/geckodriver.exe");
            DesiredCapabilities capabilities = DesiredCapabilities.firefox();
            capabilities.setCapability("marionette", true);
            d=new FirefoxDriver();
            //d = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"),DesiredCapabilities.firefox());
        }
        else if(browser.equalsIgnoreCase("GC"))
        {
            System.setProperty("webdriver.chrome.driver", "C://Selenium driver/chromedriver.exe");
            d =new ChromeDriver();
            //d = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"),DesiredCapabilities.chrome());
        }
        else if(browser.equalsIgnoreCase("IE"))
        {
            System.setProperty("webdriver.ie.driver", "F:\\Driver Server\\IEDriverServer.exe");
            d=new InternetExplorerDriver();
            //d = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"),DesiredCapabilities.internetExplorer());
        }
        
        d.manage().window().maximize();
        d.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
    }
    @AfterMethod
    public void tearDown()
    {
        //Close browser
        d.quit();
    }

}

1 Answer

0 like 0 dislike
by
selected by
 
Best answer

Move your parameter to suite level.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="none">

 <parameter name="browser" value="FF"/>
  <test name="Test">
 
    <classes>
      <class name="AllScripts.AutoCompleteDemo"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->

It should work!


This site is for software testing professionals, where you can ask all your questions and get answers from 1300+ masters of the profession. Click here to submit yours now!

...