首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在javascript - webDriver中使用java变量

在javascript - webDriver中使用java变量
EN

Stack Overflow用户
提问于 2018-08-04 03:19:19
回答 2查看 55关注 0票数 1

警报将为每个迭代打印[object],而不是elemID的值。

代码语言:javascript
复制
for (WebElement el : listOfElem){
    String elemID = el.getAttribute("id");
    Javascriptexecutor js = (Javascriptexecutor) driver;
    String strg = (String) js.executeScript("alert("+elemID+");");
}

我还尝试了下面的代码:

代码语言:javascript
复制
String strg = (String)js.executeScript("alert("+elemID+");").toString();

这也会打印[object] (只需注意:使用toString()会中断循环,不确定原因)

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

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

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

如果我按照评论中的建议使用下面的

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

它打印值(第一个Sys.out),然后就是它,之后它中断循环并输出。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-04 06:37:45

如果有人正在寻找答案,我可以通过以下方式找到答案:

代码语言:javascript
复制
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
}

上面的代码在每次迭代中打印第二条Sys.out语句中elemID的值,该语句来自javascript

票数 0
EN

Stack Overflow用户

发布于 2018-08-04 03:31:38

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

请尝试以下代码:

代码语言:javascript
复制
for (WebElement el : listOfElem){
    String elemID = el.getAttribute("id");
    Javascriptexecutor js = (Javascriptexecutor) driver;
    String strg = (String) js.executeScript("alert("+elemID.toString()+");");
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51678883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档