【问题标题】:error occured while executing the javascript code in java在 java 中执行 javascript 代码时发生错误
【发布时间】:2016-08-14 21:20:30
【问题描述】:

我想在 java 中执行 javascript 代码。所以我编写了如下所示的代码。但在执行期间,它在中线失败。将错误说成“缺失”;声明之前'。

JavascriptExecutor js = (JavascriptExecutor)driver;

String g=(String) js.executeScript("var r = confirm('r u ready');"+"if(r==true) { Var b='ok'; } return b;");

System.out.println(g);

【问题讨论】:

    标签: javascript java selenium


    【解决方案1】:

    如果您的目标是在对话框关闭之前阻止执行,那么您应该使用 executeAsyncScript 而不是 executeScript。

    这是一个显示确认对话框并等待有人关闭它的示例:

    WebDriver driver= new ChromeDriver();
    driver.manage().timeouts().setScriptTimeout(20, TimeUnit.SECONDS);
    
    driver.get("http://stackoverflow.com");
    
    Boolean confirm = (Boolean)((JavascriptExecutor)driver).executeAsyncScript(
      "var callback = arguments[0]; setTimeout(function(){ " +
      "  callback(window.confirm('Are you ready?'));       " +
      "}, 1);");
    

    另一个显示提示对话框并等待某人输入一些文本并关闭它:

    WebDriver driver= new ChromeDriver();
    driver.manage().timeouts().setScriptTimeout(20, TimeUnit.SECONDS);
    
    driver.get("http://stackoverflow.com");
    
    // display a confirm dialog and waits for someone to type some text
    String prompt = (String)((JavascriptExecutor)driver).executeAsyncScript(
      "var callback = arguments[0]; setTimeout(function(){ " +
      "  callback(window.prompt('Give me some text!'));    " +
      "}, 1);");
    
    // display the text typed by the user
    System.out.println(prompt);
    

    【讨论】:

    • 谢谢兄弟,你猜对了我要做什么。
    【解决方案2】:
    "(function() {var r,b; r = confirm('r u ready'); if(r == true) { b='ok'; } return b;})()"
    

    【讨论】:

    • 我预计上述语句将输出字符串返回为“ok”。但它会以“你准备好”的形式返回。那么我怎样才能得到'ok'的输出
    • 提示:加速调试在浏览器控制台内运行executeScript字符串))
    【解决方案3】:

    你的变量声明有问题,把Var换成var

    String g=(String) js.executeScript("var r = confirm('r u ready'); var b; if(r == true) { b='ok'; } return b;");
    

    【讨论】:

      猜你喜欢
      • 2018-05-28
      • 2013-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多