java.lang.NullPointerException 硒 2 类
java.lang.NullPointerException Selenium 2 classes
当 运行 从我的本地机器上使用带远程 Web 驱动程序的 selenium 网格时,我的程序工作正常。但是,当我使用带有远程 Web 驱动程序的硒网格设置相同的测试用例时。在日食中获取消息说:
java.lang.NullPointerExceptionat PP_OBJ_Login.Adminlogin(PP_OBJ_Login.java:38)
at PP_Main.step01_Login(PP_Main.java:86)
现在我知道上面的意思是第 38 行和第 86 行都是问题所在类我的问题是我不知道为什么当我将 selenium 网格与远程 Web 驱动程序一起使用时会发生这种情况.
public class PP_Main {
private static WebDriver driver;
private static String homeUrl;
//private String homeTitle ="Google";
@SuppressWarnings("unused")
private boolean acceptNextAlert = true;
private static StringBuffer verificationErrors = new StringBuffer();
@BeforeClass
public static void setUp() throws Exception {
//----------This works and envokes IE browser -------
System.setProperty("webdriver.ie.driver", "C:\IEDriverServer.exe");
DesiredCapabilities cap = DesiredCapabilities.internetExplorer();
cap.setCapability(CapabilityType.BROWSER_NAME, DesiredCapabilities.internetExplorer());
cap.setBrowserName("internet explorer");
cap.setPlatform(Platform.ANY);
RemoteWebDriver driver = new RemoteWebDriver(new URL("http://51.19.210.111:5555/wd/hub"), cap);
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
String url = "https://wfn-iat.adp.com/public/index.htm";
driver.get(url);
}
@Test
public void step01_Login() throws Exception {
PP_OBJ_Login.AdminVisiable(driver);
PP_OBJ_Login.Adminlogin(driver).click();-- -> line 86
PP_OBJ_Login.UserName(driver).sendKeys("NorfolkAutoUser6@adp");
PP_OBJ_Login.Submitbtn(driver).click();
PP_OBJ_Login.Password(driver).sendKeys("iatiat01");
Thread.sleep(2000);
PP_OBJ_Login.Submitbtn(driver).click();
Thread.sleep(5000);
}
PP_OBJ_Login.Java
public class PP_OBJ_Login {
private static WebElement element = null;
// WebElement Adminlogin
public static WebElement Adminlogin(WebDriver driver) {-- -- -> Line 38
element = driver.findElement(By.id("adminLogin"));
return element;
}
// WebElement input Field
public static WebElement UserName(WebDriver driver) {
element = driver.findElement(By.id("USER"));
return element;
}
我希望它能使用 selenium 网格和远程网络驱动程序工作。有什么办法可以解决空指针问题吗?
你的问题是,你将 'driver' 定义为 class 成员,但你没有实例化它。所以它一直都是空的。
public class PP_Main {
private static WebDriver driver;
private static String homeUrl;
//...
并且您在 setUp() 中实例化的驱动程序仅在方法本身内部有效。尽管它具有完全相同的名称,但它不是您全局定义的 'driver'。
@BeforeClass
public static void setUp() throws Exception {
// ...
cap.setPlatform(Platform.ANY);
RemoteWebDriver driver = new RemoteWebDriver(new URL("http://51.19.210.111:5555/wd/hub"), cap);
// ...
}
以这种方式实例化它
public class PP_Main {
private static RemoteWebDriver driver;
private static String homeUrl;
//...
@BeforeClass
public static void setUp() throws Exception {
// ...
cap.setPlatform(Platform.ANY);
driver = new RemoteWebDriver(new URL("http://51.19.210.111:5555/wd/hub"), cap);
// ...
}
这应该有效。
当 运行 从我的本地机器上使用带远程 Web 驱动程序的 selenium 网格时,我的程序工作正常。但是,当我使用带有远程 Web 驱动程序的硒网格设置相同的测试用例时。在日食中获取消息说:
java.lang.NullPointerExceptionat PP_OBJ_Login.Adminlogin(PP_OBJ_Login.java:38)
at PP_Main.step01_Login(PP_Main.java:86)
现在我知道上面的意思是第 38 行和第 86 行都是问题所在类我的问题是我不知道为什么当我将 selenium 网格与远程 Web 驱动程序一起使用时会发生这种情况.
public class PP_Main {
private static WebDriver driver;
private static String homeUrl;
//private String homeTitle ="Google";
@SuppressWarnings("unused")
private boolean acceptNextAlert = true;
private static StringBuffer verificationErrors = new StringBuffer();
@BeforeClass
public static void setUp() throws Exception {
//----------This works and envokes IE browser -------
System.setProperty("webdriver.ie.driver", "C:\IEDriverServer.exe");
DesiredCapabilities cap = DesiredCapabilities.internetExplorer();
cap.setCapability(CapabilityType.BROWSER_NAME, DesiredCapabilities.internetExplorer());
cap.setBrowserName("internet explorer");
cap.setPlatform(Platform.ANY);
RemoteWebDriver driver = new RemoteWebDriver(new URL("http://51.19.210.111:5555/wd/hub"), cap);
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
String url = "https://wfn-iat.adp.com/public/index.htm";
driver.get(url);
}
@Test
public void step01_Login() throws Exception {
PP_OBJ_Login.AdminVisiable(driver);
PP_OBJ_Login.Adminlogin(driver).click();-- -> line 86
PP_OBJ_Login.UserName(driver).sendKeys("NorfolkAutoUser6@adp");
PP_OBJ_Login.Submitbtn(driver).click();
PP_OBJ_Login.Password(driver).sendKeys("iatiat01");
Thread.sleep(2000);
PP_OBJ_Login.Submitbtn(driver).click();
Thread.sleep(5000);
}
PP_OBJ_Login.Java
public class PP_OBJ_Login {
private static WebElement element = null;
// WebElement Adminlogin
public static WebElement Adminlogin(WebDriver driver) {-- -- -> Line 38
element = driver.findElement(By.id("adminLogin"));
return element;
}
// WebElement input Field
public static WebElement UserName(WebDriver driver) {
element = driver.findElement(By.id("USER"));
return element;
}
我希望它能使用 selenium 网格和远程网络驱动程序工作。有什么办法可以解决空指针问题吗?
你的问题是,你将 'driver' 定义为 class 成员,但你没有实例化它。所以它一直都是空的。
public class PP_Main {
private static WebDriver driver;
private static String homeUrl;
//...
并且您在 setUp() 中实例化的驱动程序仅在方法本身内部有效。尽管它具有完全相同的名称,但它不是您全局定义的 'driver'。
@BeforeClass
public static void setUp() throws Exception {
// ...
cap.setPlatform(Platform.ANY);
RemoteWebDriver driver = new RemoteWebDriver(new URL("http://51.19.210.111:5555/wd/hub"), cap);
// ...
}
以这种方式实例化它
public class PP_Main {
private static RemoteWebDriver driver;
private static String homeUrl;
//...
@BeforeClass
public static void setUp() throws Exception {
// ...
cap.setPlatform(Platform.ANY);
driver = new RemoteWebDriver(new URL("http://51.19.210.111:5555/wd/hub"), cap);
// ...
}
这应该有效。