document.getElementsByTagName('input') - не работает!



  • Всем привет!
    Никак не могу понять что не так. При вставке js кода в Browser->Javascript должно вроде как работать обращение к document.
    Для примера написал простой скрипт:

    1. Browser->Load "http://google.com/"
    2. Browser->Javascript присваиваю переменной SAVED_SCRIPT_RESULT значение document.getElementsByTagName('input'). Само собой выбираю Expression.

    Соответственно, ожидаю, что в переменную SAVED_SCRIPT_RESULT сохранятся все элементы с тегом input. Но на деле получаю ошибку:
    ReferenceError: Can't find variable: document during execution of action

    Не могу понять что здесь не так и как мне сохранить в переменную все элементы с нужным мне тегом? Спасибо!



  • @rinat10101 нужно тип строка для этого действия



  • @drprime Но в этом случае в переменную записывается просто строка "[object HTMLCollection]", просто текст. А мне нужно, чтобы как в js в эту переменную записались все объекты - массив элементов с тегом input. Чтобы я мог к каждому элементу обращаться после и считывать разные параметры - name, value и тп
    например, [[NAME_EL]] = [[SAVED_SCRIPT_RESULT]][12].name;



  • @rinat10101 Результат выполнения действия "яваскрипт" будет только строка. Для работы с данными страницы в "выполнить код" придётся распарсивать данные (например в действии яваскрипт перевести объект в строку, а в выполнить код строку в объект).

    Либо работать с элементами объекта там же, в действии "яваскрипт"

    arr = document.getElementsByTagName('input')
    

    затем

    arr[12].name
    


  • @fox Если я правильно понял, то предложение перевести в этом же действии все, например, в JSON строку и сохранить ее в переменную. Потом распарсить и обращаться к каждому свойству внесенному в JSON.
    А где тогда найти ссылку именно на этот элемент?
    Например, мне нужно перебрать весь список элементов в этом массиве и обратиться к прародителю каждого элемента (generalParent = arrayAllInputs[i].parentNode.parentNode)
    И внутри этого прародителя еще осуществить поиск по тегу (generalParent.getElementsByTagName('td'))
    И я даже не представляю как это осуществить если не сохранить объекты в массив со ссылками на элементы, а в строку.



  • @rinat10101 Наверное использовать второй предложенный вариант и выполнять всю обработку на стороне браузера в действие Яваскрипт.



  • Столкнулся с этой же проблемой, где только не пробовал писать код JS, но везде возникают ошибки, в одних функциях не понимает document, в других не может работать с объектами, в общем одни полумеры, было бы гораздо удобнее, если бы добавлено JS, во "Встроенные языки", как Node, и можно было бы целиком писать функции и тд.
    В общем если кому интересно, то нашел решение в модуле для Node.js, называется "jsdom", работает на Node.js v12.18.3, которая есть в последних выпусках.
    Если работать с кодом всей страницы, то подтупливает, поэтому нахожу код нужно элемента и сохраняю в переменную стандартными средствами BAS, после чего уже преобразую эту переменную в DOM и с ним работаю через этот модуль.
    Возможно кому-то пригодится эта информация.


Log in to reply