Selenium(Java):ページが正しくロードされているかどうかをポジティブチェックとネガティブチェックの両方で行います

KnightMove

Seleniumには、ページが技術的に正しく読み込まれたかどうかの標準的なチェックがあります。例えば:

@FindBy(id = "loginButton")
private WebElement loginButton;

@Override
public void assertLoadedTechnicallyCorrect() {
    WebDriverWait wait = waitWithTimeoutSeconds(10);
    wait.until(ExpectedConditions.elementToBeClickable(loginButton));
}

問題:エラーメッセージ(alertMessageと呼びましょう)のある別のページがはるかに高速に読み込まれるため、ページが読み込まれるかどうかにかかわらず、多くの場合10秒待つ必要はありません。この場合、ログインボタンはページに表示されません。

したがって、予想される動作は次のとおりです。

  • loginButtonまたはalertMessageのいずれかがクリック可能になるまで待ちます(もちろん、alertMessageには表示されていれば十分ですが、クリック可能でもあります)。
  • loginButtonの場合は、テストケースを続行します。
  • alertMessageの場合は、停止してエラーメッセージをスローします。

同様の質問がSeleniumの予想される条件の下で提起され、回答されました-「または」を使用することは可能ですか?

ただし、artfulrobotが「AnyEc」クラスを定義して提案したソリューションは、同じ動作ではなく、異なるケースに対して反対の動作が必要なため、同じようには機能しません。

ガイジュリア

これを解決するにはいくつかの方法があります。

その場合は使用できます。

driverWait.until(ExpectedConditions.or(
    ExpectedConditions.presenceOfElementLocated(By.cssSelector("div.something")),
    ExpectedConditions.presenceOfElementLocated(By.cssSelector("div.anything"))));

次に、どの要素が次のように表示されているかを個別に確認します

if(driver.findelements(By.xpath("loginbutton")).size>0) 
//do loginbutton code part

else if (driver.findelements(By.xpath("error message")).size>0)
 //do error part

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ