Seleniumには、ページが技術的に正しく読み込まれたかどうかの標準的なチェックがあります。例えば:
@FindBy(id = "loginButton")
private WebElement loginButton;
@Override
public void assertLoadedTechnicallyCorrect() {
WebDriverWait wait = waitWithTimeoutSeconds(10);
wait.until(ExpectedConditions.elementToBeClickable(loginButton));
}
問題:エラーメッセージ(alertMessageと呼びましょう)のある別のページがはるかに高速に読み込まれるため、ページが読み込まれるかどうかにかかわらず、多くの場合10秒待つ必要はありません。この場合、ログインボタンはページに表示されません。
したがって、予想される動作は次のとおりです。
同様の質問が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]
コメントを追加