質問 2 に対する Divi の回答は問題ありません。パート1では、あなたが言ったように要素が表示されているかどうかを確認できます:
webElement.isDisplayed();
または、イベント前後のページの html を比較することもできます。
driver.getPageSource();
(各イベント後に URL が変更される場合は、URL を確認することもできます)。
HTML のソースを取得する際の問題の 1 つは、最後のアクションの後にイベントがトリガーされ、完了せず、HTML が同じままになる可能性があることです。これを回避するには、次の条件のいくつかを確認してください。
(Boolean) ((JavascriptExecutor)driver).executeScript("return jQuery.ready");
((JavascriptExecutor)driver).executeScript("return document.readyState").equals("complete");
または、jQuery.ready に似た別の機能を持つ別の JavaScript フレームワークを使用している可能性があります。
最後に、アクティブな要素を変更したり、フィールドからタブで移動したりした場合にのみイベントがトリガーされるという問題が発生する可能性があります。したがって、次のようなものを実行できます。
Actions actionObject = new Actions(driver);
actionObject.sendKeys(Key.TAB).perform();
または、javascript を使用して設定することもできます (以下のコードを確認していないため、webElement を html 基本要素に設定します)。
((JavascriptExecutor) driver).executeScript("arguments[0].focus();", webElement);
最後のクリックが取り消される可能性があるため、webdriver を使用して body 要素をクリックすることはお勧めしません。
完全を期すために、質問2に対するDiviの回答を含めています。
ページの URL を取得し、予想される URL と比較することで、別のページにリダイレクトされているかどうかを確認できます。
WebDriver driver;
driver.getCurrentUrl() // will returns the String value
現在の URL が予想される URL と一致しない場合は、2 つの方法があります。
1) Selenium (または) webdriver navigate メソッドで Open 関数を使用して、予想される URL を再度開くことができます
driver.navigate().to("expected_url");
2) 戻るナビゲーションを使用できます
driver.navigate().back();