我有一个表单,包含许多元素(输入,选择,复选框等)。如何对表单内的所有元素应用操作,而不是每个元素明确地执行它?
这是我的代码(在Selenium IDE中):
storeEval |
window.document.getElementsByTagName('form')[0].id = 'myForm';
window.document.defaultView.getComputedStyle(window.document.myForm.getElementsByTagName('*')).getPropertyValue('background-color');
| result
我收到错误:[error] Threw an exception: document.myForm is undefined
我试着这样做:
storeEval |
window.document.getElementsByTagName('form')[0].id = 'myForm';
window.document.defaultView.getComputedStyle(window.document.getElementById('myForm')).getPropertyValue('background-color');
它正常工作。
当我尝试这样做时:
var myForm = document.getElementsByTagName('form')[0];
var children = myForm.childNodes;
我收到错误:[error] Threw an exception: document.myForm is undefined
答案 0 :(得分:1)
首先,您需要为表单标记设置id
属性,以便您可以使用JavaScript轻松识别它。
例如,如果您的表单id
为myForm
,则可以执行此操作
var children = document.myForm.childNodes;
// or
var children = document.myForm.getElementsByTagName('*');
第一个返回直接后代列表,第二个返回所有后代列表。
编辑:您可以通过id
之外的许多其他方式识别表单,但可能会变得很难。试试document.getElementsByTagName('form')
。如果您的页面中只有一个表单,则效果很好。
答案 1 :(得分:1)
试试这个:
Command: storeEval
Target : myForm = selenium.browserbot.getCurrentWindow().document.getElementsByTagName("form")[0].childNodes; var colors = new Array(); for (i=0; i < myForm.length; i++) { colors[i] = window.document.defaultView.getComputedStyle(myForm[i]).getPropertyValue('background-color')}; colors.join()
Value : result
JavaScript代码段selenium.browserbot.getCurrentWindow()
获取应用程序的窗口。
答案 2 :(得分:0)
我不确定您为什么要这样做,但为了在表单标记中引用所有子标记,您可以尝试以下操作:
#my_form * {
color: #369
}
然而,如果您只想引用特定于表单的元素,那么它们就不多了,所以您只需将它们连续指定:
#my_form select, #my_form input, #my_form label, #my_form button {
color: #369
}
修改即可。如果你想通过javascript引用表单中的所有元素,和你正在使用jQuery框架(我强烈推荐),你可以使用相同的选择器:
$('#my_form *').css( ... )
$('#my_form select, #my_form input, #my_form label, #my_form button').css( ... )