0
Assert.assertFalse(driver.findElement(By.xpath("element's xpath")).isDisplayed(),
            "Bug!! The element is appeared");

上記のスクリプトでコードを実行すると、「要素が見つかりません (要素の xpath で言及されています)」のようなステートメントでスクリプトが失敗します。私の考えは、要素が画面に存在しないことを確認することです

4

3 に答える 3

0

これはずっと前に尋ねられたようですが、おそらく、同様の問題の解決策を探している人にとっては、今では役に立つでしょう. 私はそのような問題に対処するための特定の方法を持っています.これが良い方法であるかどうかはわかりませんが、少なくともそれは理にかなっており、仕事をしています.

まず、通常、そのような要素を見つけるための別のメソッドを定義します。

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 の第一人者ではないので、現在のソリューションを改善するための貢献は大歓迎です。

于 2014-11-29T17:30:06.770 に答える