'Unable to understand the below error, please assist
Unable to understand the below error, please assist with the code. All the code is indented properly. I tried updated all the dependancies as well, however the error doesnt resolve.
Code:
**Base Class:** Where the drivers are setup
package baseClass;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.edge.EdgeOptions;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
import io.github.bonigarcia.wdm.WebDriverManager;
public class BaseClass{
static WebDriver driver;
public void getWebDriver(String browserName) throws InterruptedException
{
if(browserName.equalsIgnoreCase("chrome")) //To use Chrome driver
{
WebDriverManager.chromedriver().setup();
ChromeOptions options = new ChromeOptions();
driver = new ChromeDriver(options);
}
else if(browserName.equalsIgnoreCase("firefox")) //To use firefox Driver
{
WebDriverManager.firefoxdriver().setup();
FirefoxOptions options = new FirefoxOptions();
driver=new FirefoxDriver(options);
}
else if(browserName.equalsIgnoreCase("Edge")) //To use Edge Driver
{
WebDriverManager.edgedriver().setup();
EdgeOptions options = new EdgeOptions();
driver=new EdgeDriver(options);
}
else
{
driver=null;
System.out.println("Please provide the browser Name as Chrome/Firefox");
}
driver.manage().window().maximize();
driver.get("https://jqueryui.com/draggable/");
Thread.sleep(1000);
//test1.log(Status.PASS,"Entered the Browser Name");
}
}
Common Class Common methods are placed in this class package baseClass;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
public class CommonMethods extends BaseClass {
WebDriver driver;
Actions action = new Actions(driver);
public void initializeDriver(WebDriver driver) {
this.driver = driver;
}
public void clickOperation() {
WebElement Selectable=driver.findElement(By.xpath("//*[@id='sidebar']/aside[1]/ul/li[4]/a"));
action.moveToElement(Selectable).click().perform();
WebElement Item3=driver.findElement(By.xpath("//*[@id=\"selectable\"]/li[3]"));
action.moveToElement(Item3).click().perform();
}
}
TestClass All the test cases are in this class package testClasses;
import org.openqa.selenium.WebDriver;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
import baseClass.CommonMethods;
import baseClass.BaseClass;
public class TestClass {
WebDriver driver;
CommonMethods cm=new CommonMethods();
@BeforeTest
@Parameters({"browsername_from_xml"})
public void BrowserCall(String browser) throws InterruptedException
{
BaseClass baseClass = new BaseClass();
baseClass.getWebDriver(browser);
cm.initializeDriver(driver);
}
//click() – clicks at the current location
@Test(priority = 2)
public void clickOperationTest() {
cm.clickOperation();
}
@AfterTest
public void closeBrowser()
{
driver.quit();
}
}
Error:
[RemoteTestNG] detected TestNG version 7.4.0
org.testng.TestNGException:
Cannot instantiate class testClasses.TestClass
at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:30)
at org.testng.internal.InstanceCreator.instantiateUsingDefaultConstructor(InstanceCreator.java:193)
at org.testng.internal.InstanceCreator.createInstanceUsingObjectFactory(InstanceCreator.java:113)
at org.testng.internal.InstanceCreator.createInstance(InstanceCreator.java:79)
at org.testng.internal.objects.SimpleObjectDispenser.dispense(SimpleObjectDispenser.java:25)
at org.testng.internal.objects.GuiceBasedObjectDispenser.dispense(GuiceBasedObjectDispenser.java:30)
at org.testng.internal.ClassImpl.getDefaultInstance(ClassImpl.java:112)
at org.testng.internal.ClassImpl.getInstances(ClassImpl.java:165)
at org.testng.TestClass.getInstances(TestClass.java:122)
at org.testng.TestClass.initTestClassesAndInstances(TestClass.java:102)
at org.testng.TestClass.init(TestClass.java:94)
at org.testng.TestClass.<init>(TestClass.java:59)
at org.testng.TestRunner.initMethods(TestRunner.java:463)
at org.testng.TestRunner.init(TestRunner.java:339)
at org.testng.TestRunner.init(TestRunner.java:292)
at org.testng.TestRunner.<init>(TestRunner.java:223)
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.ITestRunnerFactory.newTestRunner(ITestRunnerFactory.java:55)
at org.testng.SuiteRunner$ProxyTestRunnerFactory.newTestRunner(SuiteRunner.java:659)
at org.testng.SuiteRunner.init(SuiteRunner.java:173)
at org.testng.SuiteRunner.<init>(SuiteRunner.java:107)
at org.testng.TestNG.createSuiteRunner(TestNG.java:1300)
at org.testng.TestNG.createSuiteRunners(TestNG.java:1276)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1125)
at org.testng.TestNG.runSuites(TestNG.java:1063)
at org.testng.TestNG.run(TestNG.java:1031)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115)
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 java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:23)
... 29 more
Caused by: java.lang.IllegalArgumentException: Driver must be set
at org.openqa.selenium.internal.Require.nonNull(Require.java:59)
at org.openqa.selenium.interactions.Actions.<init>(Actions.java:68)
at baseClass.CommonMethods.<init>(CommonMethods.java:12)`enter code here`
at testClasses.TestClass.<init>(TestClass.java:16)
... 35 more
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
