サイトでのユーザーのアクションのシミュレーションの小さな問題を解決する必要があります。特定のタグを選択してから、「OK」ボタンを押すことを模倣します。タグ付きの行がいくつかあるので、jQuery を使用して for ループで行うことにしました。しかし、このコードは最初の反復でのみ機能します (しかし、かなりうまく機能します - 数値が変化し、次に alert('gooood-goood') が表示されます)。
興味深いことに、ループが継続し、vars 'option' と 'select' が適切に割り当てられ、2 番目のボタンの alert() も表示され、イベント onclick が機能したことを示していますが、2 番目の行のタグはゼロのままで、simulate はありませんでした。実際のonclickイベントの。このコードは、サイクルのすべてのループで動作することを拒否しているように見えましたが、最初のループでした。
最終的な目標 - ユーザーをシミュレートし、JavaScript で正確に解決する必要はありません。ループ内に動的に変化するパラメーターがあります。Selenium IDE が答えになるかもしれませんが、ループ内のいくつかのロジックと変更されたパラメーターで動作する必要があります。
ここに 2 つのリストがあります: script と html で、スクリプトを実行する必要があります。
<table>
<tr>
<td id="c10">
<select name="c0">
<option value="0" selected>0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
</select>
</td>
<td id="c11">
<select name="c1">
<option value="0" selected>0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
</select>
</td>
<td id="c12">
<input value="OK" type="button" onclick="alert('gooood-goood')" />
</td>
</tr>
<tr>
<td id="c20">
<select name="c0">
<option value="0" selected>0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
</select>
</td>
<td id="c21">
<select name="c1">
<option value="0" selected>0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</optiaon>
<option value="8">8</option>
<option value="9">9</option>
</select>
</td>
<td id="c22">
<input value="OK" type="button" onclick="alert('gooood-goood')" />
</td>
</tr>
</table>
そしてスクリプト
function foo() {
alert('inside');
var comb = rand(10, 99) + '', row = 1, col = 0;
for (; row <= 2; row++) {
for (; col <= 1; col++) {
var select = '#c' + row + col + ' select[name=c' + col + ']';
var option = "#c" + row + col + " select option[value=" + comb[col] + "]";
$(select).change(function () {
$(option).prop('selected', true);
});
$(select).change();
if (col == 1) {
var i = col + 1;
$('#c' + row + i + ' input').click();
}
}
col = 0;
comb = rand(10, 99);
}
}
$(function () {
document.getElementById('done').onclick = foo;
});
function rand(min, max) { // Generate a random integer
if (max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
} else {
return Math.floor(Math.random() * (min + 1));
}
}
更新
何をしたかわかりませんが、現在は機能しています。同じコード:/