I have written the below code using Selenium-Java. Then I converted the project into TestNG. But when I run the program I'm getting the below exception.
But the program is running successfully, when i run it as java application
public class Testform {
WebDriver driver = new FirefoxDriver();
@Test
public void openBrowser() {
// System.setProperty("webdriver.gecko.driver", "E://Rijo/DLS/geckodriver.exe");
//DesiredCapabilities dc = DesiredCapabilities.firefox();
//dc.setCapability("marionette", true);
}
@Test
public void registerForm() {
// Get the WebElement corresponding to the first name(TextField)
WebElement firstname = driver.findElement(By.id("name_3_firstname"));
WebElement lastname = driver.findElement(By.id("name_3_lastname"));
firstname.isDisplayed();
firstname.isEnabled();
firstname.sendKeys("Zumo");
lastname.sendKeys("Car");
WebElement radioBtn = driver.findElement(By.name("radio_4[]"));
radioBtn.click();
WebElement check1 = driver.findElement(By.name("checkbox_5[]"));
check1.click();
Select dropdownctry = new Select(driver.findElement(By.name("dropdown_7")));
dropdownctry.selectByVisibleText("India");
Select dropdownmnth = new Select(driver.findElement(By.name("date_8[date][mm]")));
dropdownmnth.selectByVisibleText("1");
Select dropdownday = new Select(driver.findElement(By.name("date_8[date][dd]")));
dropdownday.selectByVisibleText("10");
Select dropdownyear = new Select(driver.findElement(By.name("date_8[date][yy]")));
dropdownyear.selectByVisibleText("1997");
WebElement phonenumber = driver.findElement(By.id("phone_9"));
phonenumber.sendKeys("918877664659");
WebElement username = driver.findElement(By.id("username"));
username.sendKeys("Testngtest123");
WebElement email = driver.findElement(By.id("email_1"));
email.sendKeys("rroommff@rr.tt");
WebElement textarea = driver.findElement(By.name("description"));
textarea.sendKeys("Selenium");
// Get the WebElement corresponding to the Password Field
WebElement password = driver.findElement(By.name("password"));
password.sendKeys("Test@test1");
WebElement confirmpwd = driver.findElement(By.id("confirm_password_password_2"));
confirmpwd.sendKeys("Test@test1");
}
@Test
public void closeForm() {
WebElement submit = driver.findElement(By.name("pie_submit"));
submit.click();
}
}
"And this is my testng.xml file"
<?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">
<classes>
<class name="com.Testform"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
"And I'm getting the below exception."
[RemoteTestNG] detected TestNG version 6.14.2
org.testng.TestNGException:
Cannot instantiate class com.Testform
at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:30)
at org.testng.internal.ClassHelper.createInstance1(ClassHelper.java:423)
at org.testng.internal.ClassHelper.createInstance(ClassHelper.java:336)
at org.testng.internal.ClassImpl.getDefaultInstance(ClassImpl.java:125)
at org.testng.internal.ClassImpl.getInstances(ClassImpl.java:190)
at org.testng.TestClass.getInstances(TestClass.java:95)
at org.testng.TestClass.initTestClassesAndInstances(TestClass.java:81)
at org.testng.TestClass.init(TestClass.java:73)
at org.testng.TestClass.<init>(TestClass.java:38)
at org.testng.TestRunner.initMethods(TestRunner.java:389)
at org.testng.TestRunner.init(TestRunner.java:271)
at org.testng.TestRunner.init(TestRunner.java:241)
at org.testng.TestRunner.<init>(TestRunner.java:192)
at org.testng.remote.support.RemoteTestNG6_12$1.newTestRunner(RemoteTestNG6_12.java:33)
at org.testng.remote.support.RemoteTestNG6_12$DelegatingTestRunnerFactory.newTestRunner(RemoteTestNG6_12.java:66)
at org.testng.SuiteRunner$ProxyTestRunnerFactory.newTestRunner(SuiteRunner.java:713)
at org.testng.SuiteRunner.init(SuiteRunner.java:260)
at org.testng.SuiteRunner.<init>(SuiteRunner.java:198)
at org.testng.TestNG.createSuiteRunner(TestNG.java:1295)
at org.testng.TestNG.createSuiteRunners(TestNG.java:1273)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1128)
at org.testng.TestNG.runSuites(TestNG.java:1049)
at org.testng.TestNG.run(TestNG.java:1017)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:24)
... 25 more
Caused by: java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.gecko.driver system property; for more information, see https://github.com/mozilla/geckodriver. The latest version can be downloaded from https://github.com/mozilla/geckodriver/releases
at com.google.common.base.Preconditions.checkState(Preconditions.java:847)
at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:124)
at org.openqa.selenium.firefox.GeckoDriverService.access$100(GeckoDriverService.java:41)
at org.openqa.selenium.firefox.GeckoDriverService$Builder.findDefaultExecutable(GeckoDriverService.java:141)
at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:339)
at org.openqa.selenium.firefox.FirefoxDriver.toExecutor(FirefoxDriver.java:158)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:120)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:98)
at com.Testform.<init>(Testform.java:17)
... 30 more
"Could someone please help me regarding this?"