背景:夜間にデータベースを読み取り、その結果を別のシステムに書き込むプロセスを実行しています。ターゲットシステムには、UIを持つHTML Webサービス以外のインタフェースはありません。私はもともとこのシステムを数年前に設定していましたが、IE 9で動作させると本当に信頼性がありました。しかし、このプロセスを実行するホストはWindows 2008 R2から2012 R2に変更され、IEのバージョンはIE 11とそれは主に動作しますが、怒っているケースでは動作しません。なぜ私のSELECTコントロールの変更selectedIndexは時々変わらないのですか?
"オフ"(値= 0)または "オン"(値= 1)のドロップダウンSELECTでウェブページを操作しています。複数の同一のドロップダウンがあるため、ドロップダウンの名前は可変です。私は見つけると個別に設定します。
私はSELECTを見つけて値を設定するコードを書いていますが、いくつかのケースでは、それは魅力的なもののように機能し、他のものではコードをステップしても値を設定しません。値を設定していないページでIEを監視しました。コードはここにある:
bool bDone = false;
mshtml.IHTMLElementCollection objEventCollection = (mshtml.IHTMLElementCollection)objDocument.getElementsByTagName("select");
for (int i = 0; i < objEventCollection.length; i++)
{
mshtml.IHTMLElement objElement = (mshtml.IHTMLElement)objEventCollection.item(i, 0);
if (objElement.getAttribute("name").EndsWith("NewEvent"))
{
objElement.click();
mshtml.HTMLSelectElement objEvent = (mshtml.HTMLSelectElement)objElement;
switch (sEventType)
{
case "Off":
objEvent.selectedIndex = 0; // This SOMETIMES works and SOMETIMES will error out!
bDone = true;
break;
case "On":
objEvent.selectedIndex = 1; // This SOMETIMES works and SOMETIMES will error out!
bDone = true;
break;
}
}
if (bDone)
{
break;
}
}
bOK = bDone;
関連ページのコードは次のようになります。SOMETIMES、NEWEVENTドロップダウンの値が毎回変化するのではなく、なぜ
<td valign="middle" align="center"><input class="data" type="hidden" name="No1EventString" value="0"><input class="data" type="hidden" name="No1OriginalEvent" value="0"><select class="data" name="No1NewEvent">
<option value="0" selected="">Off</option>
<option value="1">On</option>
</select></td>
私は知りません。
私がデバッグでこれを実行すると、それは非常に喜んで通るが、その後、時々、私は次のエラーを取得:場合、
を誰もがこれを設定するための、より信頼性の高い方法を知っています私はそれを修正することはできませんか?
また、SELECTにフォーカスを設定してから、下ボタンを押すなどの回避策はありますか(これはどのように行うのか分かりません)。
あなたのコードはどこで実行されていますか?ブラウザでは? VBスクリプト?他に何か? – user1429080
コードはWin32アプリケーションで実行されています。 – QuietLeni