Java Webdriver从本地存储获取项目
我正在尝试使用SeleniumWebDriver从本地存储中获取项目 我遵循了,但当我运行代码时,我得到了Java Webdriver从本地存储获取项目,java,selenium,selenium-webdriver,storage,local,Java,Selenium,Selenium Webdriver,Storage,Local,我正在尝试使用SeleniumWebDriver从本地存储中获取项目 我遵循了,但当我运行代码时,我得到了NullPointerException 调试代码时,我看到函数:getItemFromLocalStorage由于某种原因返回NULL 这是我的密码: 公共类存储 { 公共静态WebDriver; 公共静态JavascriptExecutor js; 公共静态void main(字符串[]args) { System.setProperty(“webdriver.chrome
NullPointerException
调试代码时,我看到函数:getItemFromLocalStorage由于某种原因返回NULL
这是我的密码:
公共类存储
{
公共静态WebDriver;
公共静态JavascriptExecutor js;
公共静态void main(字符串[]args)
{
System.setProperty(“webdriver.chrome.driver”,“D://chromedriver.exe”);
驱动程序=新的ChromeDriver();
驱动程序。获取(“http://html5demos.com/storage");
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
driver.findElement(By.id(“本地”)).sendKeys(“myLocal”);
driver.findElement(By.id(“会话”)).sendKeys(“mySession”);
driver.findElement(按.tagName(“代码”))。单击();//仅转义文本框
字符串sItem=getItemFromLocalStorage(“值”);
系统输出打印项次(sItem);
}
公共静态字符串getItemFromLocalStorage(字符串键)
{
返回(String)js.executeScript(String.format)(
“return window.localStorage.getItem('%s');”,key));
}
}
我假设您的驱动程序实例上有NPE。
您可以在创建驱动程序实例时设置驱动程序位置属性:
final ChromeDriverService chromeDriverService = new ChromeDriverService.Builder()
.usingDriverExecutable(new File("D://chromedriver.exe")).build();
driver = new ChromeDriver(chromeDriverService);
顺便说一句,我使用了selenium 2.44.0,这是因为您忘记正确实例化
js
对象。在driver=new ChromeDriver()之后添加以下行代码>
它将起作用。使用此代码
WebStorage webStorage = (WebStorage) new Augmenter().augment(driver);
LocalStorage localStorage = webStorage.getLocalStorage();
String user_data_remember = localStorage.getItem("user_data_remember");
String emailAfterLogout;
String passwordAfterLogout;
if (!user_data_remember.equals("")) {
JSONObject jsonObject = new JSONObject(user_data_remember);
Boolean remember = jsonObject.getBoolean("remember");
if (remember) {
emailAfterLogout = jsonObject.getString("email");
passwordAfterLogout = jsonObject.getString("password");
if (emailAfterLogout.equals(email) && passwordAfterLogout.equals(password)) {
System.out.println("Remember me is working properly.");
} else {
System.out.println("Remember me is not working.");
}
}
} else {
System.out.println("Remember me checkbox is not clicked.");
}
嗨,John,欢迎来到Stack Overflow。您是否可以编辑您的问题以包含有关错误的更多信息?部分调用堆栈非常有用,可以显示异常是什么以及在代码中的什么位置引发异常。对不起,我不知道NPE是什么,但是当我插入代码时,仍然会得到相同的异常。我也使用selenium 2.44.NPE代表空指针异常。那么,您是否有代码可以对您的sItem var(为null)执行某些操作?我看不到任何一行可以为sItem=null的情况抛出异常。无论如何,如果您从localStorage获取变量,应该将其放在第一位。正如我在localStorage上看到的,它是空的。在这种情况下,您从getItemFromLocalStorage()返回的值将为null。@John,如果它对您有效,则接受它作为正确答案。:)
WebStorage webStorage = (WebStorage) new Augmenter().augment(driver);
LocalStorage localStorage = webStorage.getLocalStorage();
String user_data_remember = localStorage.getItem("user_data_remember");
String emailAfterLogout;
String passwordAfterLogout;
if (!user_data_remember.equals("")) {
JSONObject jsonObject = new JSONObject(user_data_remember);
Boolean remember = jsonObject.getBoolean("remember");
if (remember) {
emailAfterLogout = jsonObject.getString("email");
passwordAfterLogout = jsonObject.getString("password");
if (emailAfterLogout.equals(email) && passwordAfterLogout.equals(password)) {
System.out.println("Remember me is working properly.");
} else {
System.out.println("Remember me is not working.");
}
}
} else {
System.out.println("Remember me checkbox is not clicked.");
}