Java Webdriver从本地存储获取项目

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

我正在尝试使用SeleniumWebDriver从本地存储中获取项目

我遵循了,但当我运行代码时,我得到了
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.");
        }