警报正在打印[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();


这也会打印[object](只是注意:使用toString()会中断循环,不确定为什么)

如何在每次迭代中打印elemID的值?

如果我在JavaScript外部打印elemID,它将打印该值,但我希望在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);
}


它正确打印第一个System.out的值,但其余迭代打印null

如果我按照注释中的建议使用以下内容

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

它输出值(第一个Sys.out),然后结束循环并显示出来。

最佳答案

您需要直接在toString()上调用elemID

请尝试以下代码:

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

09-27 07:08