代码之家  ›  专栏  ›  技术社区  ›  user1207289

在javascript-webDriver中使用java变量

  •  1
  • user1207289  · 技术社区  · 6 年前

    警报正在打印 [object] 而不是价值 elemID 每次迭代。

    for (WebElement el : listOfElem){
        String elemID = el.getAttribute("id");
        Javascriptexecutor js = (Javascriptexecutor) driver;
        String strg = (String) js.executeScript("alert("+elemID+");");
    }
    

    我还尝试了下面的代码:

    String strg = (String)js.executeScript("alert("+elemID+");").toString();
    

    这个指纹 [对象] 也(只是一个注释:使用 toString() 打破循环,不知道为什么)

    如何打印的值 埃莱米德 在每次迭代中?

    如果我打印 埃莱米德 在JavaScript之外,它打印值,但我希望它在JavaScript内部。


    编辑: 如果我做了

    for (WebElement el : listOfElem){
        String elemID = el.getAttribute("id");
        System.out.println(elemID);
        Javascriptexecutor js = (Javascriptexecutor) driver;
        String strg = (String) js.executeScript("alert("+elemID+");");
        System.out.println(strg);
    }
    

    它正确地打印出第一个系统的值。但是其余的迭代都会打印出来 null

    如果我按照评论中的建议使用以下内容

    String strg = (String) js.executeScript("console.log("+elemID+");"); 在上面编辑的代码中

    它打印出值(1st Sys.out),就是它,然后它中断循环并输出。

    2 回复  |  直到 6 年前
        1
  •  0
  •   James    6 年前

    你需要打电话 toString() 直接打开 elemID .

    请尝试以下代码:

    for (WebElement el : listOfElem){
        String elemID = el.getAttribute("id");
        Javascriptexecutor js = (Javascriptexecutor) driver;
        String strg = (String) js.executeScript("alert("+elemID.toString()+");");
    }
    
        2
  •  0
  •   user1207289    6 年前

    如果有人在寻找答案,我会找到答案的:

    for (WebElement el : listOfElem){
        String elemID = el.getAttribute("id");
        System.out.println(elemID); //1st
        Javascriptexecutor js = (Javascriptexecutor) driver;
        Object strg = js.executeScript("return(arguments[0]);",elemID);
        System.out.println(strg); //2nd
    }
    

    在每次迭代中,上面都会打印 elemID 在第二个Sys.out语句中,它来自javascript