Assert.assertFalse(driver.findElement(By.xpath("element's xpath")).isDisplayed(),
"Bug!! The element is appeared");
上記のスクリプトでコードを実行すると、「要素が見つかりません (要素の xpath で言及されています)」のようなステートメントでスクリプトが失敗します。私の考えは、要素が画面に存在しないことを確認することです
Assert.assertFalse(driver.findElement(By.xpath("element's xpath")).isDisplayed(),
"Bug!! The element is appeared");
上記のスクリプトでコードを実行すると、「要素が見つかりません (要素の xpath で言及されています)」のようなステートメントでスクリプトが失敗します。私の考えは、要素が画面に存在しないことを確認することです
これはずっと前に尋ねられたようですが、おそらく、同様の問題の解決策を探している人にとっては、今では役に立つでしょう. 私はそのような問題に対処するための特定の方法を持っています.これが良い方法であるかどうかはわかりませんが、少なくともそれは理にかなっており、仕事をしています.
まず、通常、そのような要素を見つけるための別のメソッドを定義します。
private static WebElement element = null;
public static WebElement findYourElement(WebDriver driver) {
try {
element = driver.findElement(By.xpath("your_xpath_here"));
}
catch(NoSuchElementException e) {
System.out.println(e.getMessage());
element = null;
return element;
}
return element;
}
ここでは、NoSuchElementException がスローされた場合にキャッチされている可能性があることがわかります。例外が発生した場合、「要素」の値も null に設定されます。これは、私のプログラムでは、以前の要素の値がここに格納されている可能性があり、関連性のない要素が他にないためです。
次はアサーションです。
Assert.assertFalse(findYourElement != null, "Bug!! The element is there!"
ここで、findYourElement によって返された要素が空でない場合、assertFalse メソッドは失敗し、要素 != null の比較から True の結果が得られ、assertFalse が失敗します。これは、続行するには false の値が必要であるためです。あなたも同様に行くことができます:
Assert.assertTrue(findYourElement = null, "Bug!! The element is there!"
このようなソリューションは物事を整理するのに役立つと思いますが、一方で、コード量の点でより大きく、より複雑になる可能性もあります。それはまた、あなたが Java をどれだけ使いこなせるか、また例外をいじる気があるかどうかにもよります。私自身は Java の第一人者ではないので、現在のソリューションを改善するための貢献は大歓迎です。