投稿者 えんぴー  (社会人) 投稿日時 2024/5/15 11:53:31
SelectIDおよびSelectID2に値を入れることは出来ました。
TestCodeおよびCheckTESTに自動的に値が入ってくれればいいのですが
ajaxは動作できないのか反映しません。

どうにかイベントを発火させたいのですが
方法はないでしょうか?

C# Chrome Selenium側

SelectElement selectElement3 = new SelectElement(driver.FindElement(By.Id("SelectID")));
selectElement3.SelectByText("テストIDだよ");


→ちゃんと「テストIDだよ」と表示されていることを確認


IJavaScriptExecutor jsExecutor = (IJavaScriptExecutor)driver;
jsExecutor.ExecuteScript("$(arguments[0]).change();", selectElement3);



上記のようにやったらchangeイベントが動くかと思ったのですが、
効果はありませんでした。


必要そうなHTMLのスクリプトソースを添付します。

-------------
一部抜粋
[pre]
<script>
$(document).ready(function() {
$("#Piyo").select2({
dropdownAutoWidth: true,
language: "ja",
matcher: select2_matchStart
});
setupSelect2($('#SelectID2In'));
setupSelect2($('#SelectID2'));
setupSelect2($('#SelectID'));

1つ目のソース
$('#SelectID').on('select2:select', function(e) {
$.ajax({
url: '/AAAA/BBBBBBBBBB=' + this.value,
success: function(result) {
$('#TestCode').val(result);
},
error: function(error) {
$('#TestCode').val("");
displayErrorDialog("エラー");
}
});
});

-----
2つ目のソース

$('#SelectID2').on('select2:select', function(e) {
$('#SelectID2In').val(this.value);
$('#SelectID2In').trigger("change");
$.ajax({
url: '/AAAAAAA/BBBBBB=' + this.value,
success: function(result) {
$('#CheckTEST').val(result);
},
error: function(error) {
$('#CheckTEST').val("");
displayErrorDialog("エラー");
}
});
});

-------
</script>
[/pre]