2 つのドロップダウンがある Web ページがあります。一方のドロップダウンでオプションを選択すると、blur イベントによってトリガーされるスクリプトを通じて、もう一方のドロップダウンのオプションのリストが更新されます。フォーカスが最初のドロップダウンから離れると、blur イベントがトリガーされます。ページを手動でナビゲートする場合、これはすべて正常に機能します。
ただし、WebDriver を使用して同じ手順を実行すると、blur イベントがトリガーされず、ドロップダウンが更新されず、スクリプトが失敗します。
最初に選択したドロップダウンの html は次のとおりです (onblur スクリプトが添付されています)。
<select id="newOrder:shipToAddressType" class="fieldRequired" onblur="PrimeFaces.ab({source:this,event:'blur',process:'newOrder:odShipData',update:'newO>rder:odShipData',partialSubmit:true,oncomplete:function(xhr,status,args)>{focusOnShipToZip();;}}, arguments[1]);" tabindex="47" size="1" name="newOrder:shipToAddressType">
<option selected="selected" value="125">Domestic</option>
<option value="126">International</option>
<option value="127">Military</option>
</select>
これが私がこれまでに試したことです:
手動でページをナビゲートする
には、ドロップダウンで選択を行い、別のフィールドにテキストを入力してドロップダウンからフォーカスを移動し、blur イベントをトリガーします。これはうまくいきませんでした。また、ドロップダウンからタブを押してみましたが、運もありませんでした。
Javascript を実行してぼかしイベント
をトリガーする Firebug から正常に実行できるため、Javascript が正しいことはわかっています。2 番目のドロップダウンの更新がトリガーされます。ただし、WebDriver からは何もトリガーされないようです。
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("document.getElementById('newOrder:shipToAddressType').blur()");
助言がありますか?ご協力いただきありがとうございます。
編集:スクリプト文字列に「return」を追加してみました。また、動作しませんでした:
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("return document.getElementById('newOrder:shipToAddressType').blur()");