所以我在我的全局属性文件中有以下内容:
browser=Chrome
QAurl = https://rahulshettyacademy.com/seleniumPractise/#/
然后我有了properties类,以便能够读取全局属性文件:
public class TestBase {
public WebDriver driver;
public WebDriver WebDriverManager() throws IOException
{
FileInputStream fis = new FileInputStream(System.getProperty("user.dir")+"//src//test//Resources//global.properties");
Properties prop = new Properties();
prop.load(fis);
String url = prop.getProperty("QAUrl"); //The url we will pass here
if(driver == null)
{
if(prop.getProperty("browser").equalsIgnoreCase("Chrome"))
{
driver.get(url);
driver = new ChromeDriver();
driver.manage().window().maximize();
}
if(prop.getProperty("browser").equalsIgnoreCase("firefox"))
{
//firefox code
}
}
return driver;
}
}
我的控制台出现以下错误:
FAILED: runScenario("Search Experience for product search in both home and Offers page", "Search and Place the order for Products")
Runs Cucumber Scenarios
java.lang.NullPointerException: Cannot invoke "org.openqa.selenium.WebDriver.get(String)" because "this.driver" is null
at Utils.TestBase.WebDriverManager(TestBase.java:24)
at Utils.TestContextSetup.<init>(TestContextSetup.java:20)
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.picocontainer.injectors.AbstractInjector.newInstance(AbstractInjector.java:145)
at org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:342)
at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:270)
你知道我错在哪里吗?
2条答案
按热度按时间sshcrbum1#
创建
TestBase
类的构造函数,并将用于加载属性的代码放在构造函数中,如下所示:wmomyfyw2#
此错误消息...
.暗示当执行以下代码行时,
driver
示例为null:详情及解决方案
您已经将 driver 声明为示例变量:
接下来当你读取
browser
属性时,首先你需要初始化ChromeDriver发起的google-chromeBrowsing Context,然后调用 url,如下所示: