我创建了一个主类并启动了chrome驱动程序。我想在多个类中使用相同的驱动程序对象。但我无法这样做。当我运行脚本时,它会抛出NullPointerexception错误。以下是我的2个样本课程。
第1课:
package seleniumWebCmnd;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class DriverConfig {
public static void main(String[] args) {
String exePath = "D:\\Sudhakar DND\\Selenium_Eclipse\\JAR files\\chromedriver.exe";
System.setProperty("webdriver.chrome.driver", exePath);
WebDriver driver = new ChromeDriver();
driver.get("http://www.store.demoqa.com");
driver.manage().window().maximize();
driver.manage().deleteAllCookies();
//Exe1.main(args);
System.out.println("Into Main function");
Exe1 Ob2 = new Exe1();
Ob2.page2();
}
}
那么,如何在下面的类中使用上面创建的Driver对象?
第2课
package seleniumWebCmnd;
import org.openqa.selenium.WebDriver;
public class Exe1 extends DriverConfig {
WebDriver driver;
public void page2() {
String PgTitle=driver.getTitle();
System.out.println("Into Class 2");
System.out.println("Page title is :" + PgTitle);
}
}
以下是eclipse控制台中显示的结果
Starting ChromeDriver 2.16.333243 (0bfa1d3575fc1044244f21ddb82bf870944ef961) on port 20675
Only local connections are allowed.
Into Main function
Exception in thread "main" java.lang.NullPointerException
at seleniumWebCmnd.Exe1.page2(Exe1.java:30)
at seleniumWebCmnd.DriverConfig.main(DriverConfig.java:23)
Picked up JAVA_TOOL_OPTIONS: -agentlib:jvmhook
答案 0 :(得分:0)
请创建另一个类并在函数中编写Chrome浏览器代码并对其进行扩展以在任何程序中获取该函数
public class OpenBrowser
{
public void chromeMethod()
{
String exePath = "D:\\Sudhakar DND\\Selenium_Eclipse\\JAR files\\chromedriver.exe";
System.setProperty("webdriver.chrome.driver", exePath);
WebDriver driver = new ChromeDriver();
}
}
现在在另一个想要获取驱动程序的类中,只需扩展OpenBrowser类并调用chromeMethod()
public class newMethod extends OpenBrowser
{
chromeMethod();
driver.get("http://www.google.com");
// your statements
}
答案 1 :(得分:0)
您已在main中创建了driver
对象
您必须将driver
对象传递给Exel
类才能访问它。
但是,您已扩展DriverConfig
,因此将代码置于DriverConfig
的构造函数中。 driver
Exel
可以将public class DriverConfig {
public WebDriver driver;
public DriverConfig() {
String exePath = "D:\\Sudhakar DND\\Selenium_Eclipse\\JAR files\\chromedriver.exe";
System.setProperty("webdriver.chrome.driver", exePath);
driver = new ChromeDriver();
driver.get("http://www.store.demoqa.com");
driver.manage().window().maximize();
driver.manage().deleteAllCookies();
}
public static void main(String[] args) {
//Exe1.main(args);
System.out.println("Into Main function");
Exe1 Ob2 = new Exe1();
Ob2.page2();
}
}
作为成员创建,或者选择像
class Exe1 extends DriverConfig {
public void page2() {
String PgTitle = driver.getTitle();
System.out.println("Into Class 2");
System.out.println("Page title is :" + PgTitle);
}
}
在Exel类中删除变量声明
// Move out of single and double quotes with `Enter`
{
"keys": ["enter"],
"command": "move",
"args": {"by": "characters", "forward": true},
"context": [
{ "key": "following_text", "operator": "regex_match", "operand": "(?:\"|').*", "match_all": true },
{ "key": "preceding_text", "operator": "regex_contains", "operand": "(?:\"|')", "match_all": true }
]
},