Предупреждение печатает [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
на каждой итерации?
Если я печатаю elemID
за пределами JavaScript, он печатает значение, но я хочу его внутри JavaScript.
EDIT: если я это сделаю
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+");");
в приведенном отредактированном коде
Он печатает значение (1st Sys.out), и это он, после чего он прерывает цикл и выходит.
Если кто-то ищет ответ, я получил его работу:
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
Вам нужно вызвать toString()
непосредственно на elemID
.
Пожалуйста, попробуйте следующий код:
for (WebElement el : listOfElem){
String elemID = el.getAttribute("id");
Javascriptexecutor js = (Javascriptexecutor) driver;
String strg = (String) js.executeScript("alert("+elemID.toString()+");");
}
toString()
непосредственно на elemID
печатает [object]
"alert("+elemID+");").toString();