с помощью переменной Java в JavaScript - WebDriver

1

Предупреждение печатает [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), и это он, после чего он прерывает цикл и выходит.

  • 0
    Я полагаю, вы имеете в виду "alert("+elemID+");").toString();
  • 0
    Ваши цитаты несбалансированы.
Показать ещё 6 комментариев
Теги:
for-loop

2 ответа

0
Лучший ответ

Если кто-то ищет ответ, я получил его работу:

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

0

Вам нужно вызвать toString() непосредственно на elemID.

Пожалуйста, попробуйте следующий код:

for (WebElement el : listOfElem){
    String elemID = el.getAttribute("id");
    Javascriptexecutor js = (Javascriptexecutor) driver;
    String strg = (String) js.executeScript("alert("+elemID.toString()+");");
}
  • 0
    тот же результат, toString() непосредственно на elemID печатает [object]
  • 0
    Вы можете напечатать elemID? Не используйте оповещение, просто распечатайте его на консоли. Это также поможет, если вы загрузили весь свой код
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню