C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

【C#】Seleniumで選択したのに連動して選択されない /たると (24/05/14(Tue) 11:00) #103117
Re[1]: 【C#】Seleniumで選択したのに連動して選択されない /魔界の仮面弁士 (24/05/15(Wed) 16:27) #103119


親記事 / ▼[ 103119 ]
■103117 / 親階層)  【C#】Seleniumで選択したのに連動して選択されない
□投稿者/ たると (1回)-(2024/05/14(Tue) 11:00:00)

分類:[C#] 

C#でWinformを利用し、SeleniumでChrome操作をしようとしています。
問題なく操作やキー入力はできるようになったのですが、
Selectタグを選択しても、連動して選択される別のSelectタグが選択されません。

SelectData1を選択すると、
SelectData2の値が連動して決定するようになっています。

HTMLの<select>部分には、もう少しclassとかもついてますが
良く分からないのでシンプルにしました。
-----
<select id="SelectData1">
<option selected="" data-select2-id="6">&nbsp;</option>
<option value="TEST1">りんご</option>
<option value="TEST2">ぶどう</option>
<option value="TEST3">キャベツ</option>
</select>

<select id="SelectData2">
<option selected=""></option>
<option>野菜</option>
<option>果物</option>
<option>肉</option>
</select>
-----------

SelectElement SelectTest= new SelectElement(chrome.FindElement(By.Id("SelectData1")));
SelectTest.SelectByText("りんご");

たとえば上記のような場合、
select2は自動で「果物」が選択されるようになってます。
プログラムでは「りんご」と入れられてますが、select2は何も選択されません。

ページ自体を私が作ったわけではないので、
どうやって実行させたらいいのかが分かりません。
上記のようにリンゴを選んでいるのだから
自動的にSelectData2に「果物」と表示させたいのです。
HTMLのプログラム?が動けばいいのですが、どのように動かすのでしょう。

Select2を取得してプログラム側で動かすことはできると思いますが
なるべくもともとある機能で選択したいと思っています。

回答よろしくお願いいたします。
[ □ Tree ] 返信 編集キー/

▲[ 103117 ] / 返信無し
■103119 / 1階層)  Re[1]: 【C#】Seleniumで選択したのに連動して選択されない
□投稿者/ 魔界の仮面弁士 (3774回)-(2024/05/15(Wed) 16:27:53)
No103117 (たると さん) に返信
> select2は何も選択されません。
jQuery UI の Select2 コントロールのことでしょうか。
それとも <select id="SelectData2"> のことでしょうか。

> どうやって実行させたらいいのかが分かりません。
(change イベントなどの)変更通知イベントを、DOM の dispatchEvent メソッドで強制発火してみるとか。
Selenium からは、ExecuteJavaScript メソッド経由で呼び出せたかと。
chrome.ExecuteScript("arguments[0].dispatchEvent(new Event('change'))", objSelectTest2 );

ただし、この <select> 要素が Select2 化されているような画面においては、
'change' では無く、'change.select2' や 'select2:select' が必要になるかもしれません。
https://select2.org/programmatic-control/events
[ 親 103117 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -