私は、ユーザーの入力を処理するために、フレームワーク内に明示的待機メソッドを作成しようとしています。このメソッドは、すべてのタイプの検索(id、xpath、およびcss)を処理することになっています。私は見当もつかない明示的待機戻り異常なfindElement値
org.openqa.selenium.NoSuchElementException: Unable to locate element: #\/\/div\[\@id\=\'slideOut\-nav\'\]\/ul\/li\[2\]\/a
:私は、このメソッドをテストしようとしたとき しかし、エラーが
方法の明示的な待ち時間の奇妙なエラーに私が受けてる
public static void isDisplaying(String variable){
wait = new WebDriverWait(driver,3);
System.out.println("Looking for: " + variable);
if (driver.findElement(By.id(variable)).isDisplayed()){
System.out.println("Found variable via id");
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id(variable)));
} else if (driver.findElement(By.xpath(variable)).isDisplayed()) {
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(variable)));
System.out.println("Found variable via xpath");
} else if (driver.findElement(By.cssSelector(variable)).isDisplayed()){
wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(variable)));
System.out.println("Found variable via css");
} else {
System.out.println(variable +" is not displayed.");
}
}
エラーを返していますなぜそれがすべての前後のスラッシュで値を返すのか。私の推測では、IDを使用してxpath文字列を検索しようとするとすぐにアプリケーションが失敗したということです。しかし、次のelse if文に移動してはいけませんか?これが本当に問題なのであれば、私はそのような問題をどのように処理すべきですか?
私は単に要素とクリックを見つけた場合、それは正常に動作し、正しいパスを返します。
//div[@id='slideOut-nav']/ul/li[2]/a
私は任意の助けをいただければ幸いですのでloooooong時間のために、この問題に引っかかってきましたの!
こんにちはクリシュナンのようにそれを呼ぶだろう、ご回答ありがとうございました。ちょうど新しいことを学びました!要素が見つからない場合、findElementはただちに例外をスローすることは決して知りませんでした。私は、ロケータを識別するために変数の最初の文字をチェックすることによってif文で自分のコードを修正しました。 – MikeyC
@MikeyC - 私の答えが助けられたら、私の答えを受け入れることができますか? –
私はすべての変数を "Variablename"に再割り当てして問題を修正しました。助けてくれてありがとう! – MikeyC