Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как достучаться до всех элементов формы (https://javascript.ru/forum/events/28600-kak-dostuchatsya-do-vsekh-ehlementov-formy.html)

ganzalik228 26.05.2012 15:48

Как достучаться до всех элементов формы
 
На страничке имеется форма, у формы нет id, нет никаких атрибутов, кроме action и method. Мне нужно проверить цвет у ВСЕХ элементов формы, не перебирая их явно (элементов куча, input select checkbox и т.д.). как "достать" из формы все элементы? Всё делаю в Selenium IDE через command: storeEval | command: мой "скрипт" | target | myResult (хотя думаю в чём делаю, не столь важно)
Что я пробовал:
1.

window.document.defaultView.getComputedStyle(windo w.document.getElementsByTagName('form')).getProper tyValue('background-color');
Ошибка: [error] Threw an exception: Could not convert JavaScript argument arg 0 [nsIDOMWindow.getComputedStyle]

2 (с присваиванием id форме).
window.document.getElementsByTagName('form')[0].id = "myForm" ; window.document.defaultView.getComputedStyle(windo w.document.myForm.getElementsByTagName('*')).getPr opertyValue('background-color');
Ошибка: [error] Threw an exception: window.document.myForm is undefined

3.
var myForm = document.getElementsByTagName('form')[0]; var children = myForm.childNodes;
Ошибка: [error] Threw an exception: myForm is undefined

4.
window.document.getElementsByTagName('form')[0].id = "myForm" ;
var children = document.myForm.getElementsByTagName('*');
такая же ошибка: [error] Threw an exception: document.myForm is undefined

Помогите, пожалуйста. Пробовал и через .setArrtibute

maksimr 26.05.2012 16:21

var form = document.forms[0], // 0 - какая по счету форма на странице, в данном случае первая.
elements = form.elements,
getStyle = function (domNode){
  return window.getComputedStyle(domNode, null);
};


for(var i = 0, len = elements.length; i < len; i ++){
    console.log(getStyle(elements[i]).backgroundColor);
}


Надеюсь что правильно понял ваш вопрос и смог хоть чем то помочь.

ganzalik228 26.05.2012 16:25

ну с return'ом селениум не очень дружить хочет, как организовать саму проверку цвета, знаю, нужно только достать все элементы формы, и такой вопрос: console.log это просто запись в лог же? я так понял? на проверку цвета не влияет?)

ganzalik228 26.05.2012 16:31

Забыл, огромное человеческое спасибо, за ответ) Хоть чуть чуть для селениума не подходит, но хотя бы есть хороший материал чтобы попробовать пошаманить с ним)

maksimr 26.05.2012 18:10

getStile(elements[i]);
    // можно заменить на 
    window.getComputedStyle(elements[i], null);


console.log - это просто обычный вывод данных, в моем случае это консоль firebug-а. =)

В данном примере я просто показал как можно достать форму и ее элементы использум свойства DOM level 0.


Часовой пояс GMT +3, время: 14:12.