0

多くの要素(入力、選択、チェックボックスなど)を含むフォームがあります。要素ごとに明示的に実行せずに、フォーム内のすべての要素にアクションを適用するにはどうすればよいですか?

これが私のコードです(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

4

3 に答える 3

1

まず、idJavaScriptで簡単に識別できるように、フォームタグに属性を設定する必要があります。

たとえば、フォームidmyFormの場合、これを行うことができます

var children = document.myForm.childNodes;
// or
var children = document.myForm.getElementsByTagName('*');

1つ目は直接の子孫のリストを返し、2つ目はすべての子孫のリストを返します。

編集:フォーム以外の多くの方法でフォームを識別できますが、id難しくなる可能性があります。で試してくださいdocument.getElementsByTagName('form')。これは、ページにフォームが1つしかない場合に特に効果的です。

于 2012-05-26T09:45:51.957 に答える
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()は、アプリケーションのウィンドウを取得します。

于 2012-05-27T10:38:02.677 に答える
0

なぜそうするのかわかりませんが、formタグ内のすべての子タグを参照するには、次のことを試してください。

#my_form * {
  color: #369
}

ただし、フォーム固有の要素のみを参照したい場合は、それほど多くはないので、それらを1行で指定するだけです。

#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( ... )
于 2012-05-26T09:38:28.573 に答える