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();
}
}