<select>
要素といくつかのsを含むページが<option>
ある場合、クリックすると、ブラウザは次のような新しいURLを開きます(JavaScriptコードは省略)。
<select>
<option value="here">go here</option>
<option value="there">go there</option>
</select>
WebDriverを使用してこの動作を自動化すると、
hereOrThereSelectElement.SelectByValue("here");
次に、新しいページが読み込まれるまで待機します。
私の場合、新しい場所のページの読み込みには(意図的に)60秒以上かかるため、WebDriverインスタンスのコマンドタイムアウトを増やす必要がありました。残念ながら、このタイムアウトは、同じWebDriverインスタンスで作成された他のすべてのテストに影響します。
また、新しいページが読み込まれるのを明示的に待機します(テストシナリオで長時間実行されていることを示すため)が、この状態では、SelectByValue
コマンドが成功した後に次のコマンドが呼び出されるため、待機は必要ありません。
ソースを調べたところ、SelectByValue
コマンドはClick
必要に応じてページの読み込みを待機するロジックを使用していることがわかりました。
だから私の質問は:新しいページがロードされるのを待たずに明示的に(または)を実行するにはどうすればよいですか?SelectByValue
Click
更新: コードに実際に入れたいのは次のとおりです。
// the following command should not wait for the new page to load
hereOrThereSelectElement.SelectByValueButDoNotWait("here");
webDriverWait.Until(/* some "page has loaded" check */)