将executeScript内编写的脚本内的javascript变量值提取并存储到普通的Java变量

时间:2019-07-18 10:08:30

标签: javascript java selenium selenium-webdriver

在下面编写的代码中,我想在编写的javascript中使用URL变量值,并将其存储在java的String URL变量中。

我尝试使用getParameter方法,但该方法在JSP中使用。那是我们在Selenium中不使用的高级Java。我试图在其他地方搜索它,但是到处都有通过JSP解释值提取的信息。请帮忙。有什么办法可以在脚本中使用该值?

    System.setProperty("webdriver.chrome.driver","F:\\Browser Chrome Driver files\\chromedriver.exe");
    WebDriver driver=new ChromeDriver();
    //WebDriver driver1 = null;
    JavascriptExecutor js = (JavascriptExecutor)driver; 
    js.executeScript("var url = prompt(\"URL\");");
    String url = request.getParameter("url");

2nd attempt:
When I use this code,

    System.setProperty("webdriver.chrome.driver","F:\\Browser Chrome Driver 
    files\\chromedriver.exe");
            WebDriver driver=new ChromeDriver();
            driver.manage().window().maximize();
            //WebDriver driver1 = null;
            JavascriptExecutor js = (JavascriptExecutor)driver; 
            //String script = ;

        String url =(String)js.executeScript("var user = prompt(\"Enter your 
    name, please:\", \"https://staging.eye.guide/login\");\r\n" + 
                "if (user != null) {\r\n" + 
                "    return user;\r\n" + 
                "}");



            Thread.sleep(5000);
            driver.get(url);

我在线程“ main”中获取异常java.lang.NullPointerException:条目中的null值:url = null。我希望驱动程序通过javascript提示访问URL。但是在第二次尝试时出现空指针异常。

2 个答案:

答案 0 :(得分:0)

您可以在JavaScript中使用return

String script = "var url = prompt(\"URL\");"
              + "return url;";

String url = (String)js.executeScript(script);

答案 1 :(得分:0)

我自己找到了解决方案。我使用Java并成功。我导入了javax.swing.JOptionPane库并创建了JOptionPane类的对象。然后使用showInput对话框方法,并将该对话框中的值存储在变量中。奏效了。