1

Selenium Web-driver 2 ツールを使用してテストを実装しようとしています。

アプリケーションには、存在が予測できない要素があります。Ok。ほとんどの場合、それらはページに存在します。しかし、そうでない場合もあります。次のメソッドは、予測不可能な要素をクリックします

public void clickTypeAheadDropdown(String typeAheadItem) {
    String xPathItemSelector = "//div[@class='gwt-SuggestBoxPopup']//td[text()='" + typeAheadItem + "']";
    WebElement dropDownItem = driver.findElement(By.xpath(xPathItemSelector));
    if (dropDownItem.isDisplayed() ) {
        dropDownItem.click();
    };

}

ただし、要素が存在しない場合は失敗します。例外は、メソッドdriver.findElement(By.xpath(xPathItemSelector)によって発生します。

要素がページに存在するかどうかをテストするにはどうすればよいですか?

PS「Element Not Found」例外をキャッチすることはお勧めできません。テストが時間切れになったときに発生するからです。

4

3 に答える 3

0

要素が存在するかどうかを確認するには、次のコードを使用できます。

if(driver.findElements(By.xpath("value")).size() != 0){
System.out.println("Element is Present");
}else{
System.out.println("Element is Absent");
}
于 2015-07-08T09:34:05.353 に答える
0

FindElements を使用して行うこともできます。

    /// <summary>
    /// Checks if the specified element is on the page.
    /// </summary>
    public static bool IsElementPresent(this IWebDriver driver, By element)
    {
        if (driver.FindElements(element).Count > 0)
            return true;
        else
            return false;
    }

    /// <summary>
    /// Checks if the specified element is on the page and is displayed.
    /// </summary>
    public static bool IsElementDisplayed(this IWebDriver driver, By element)
    {
        if (driver.FindElements(element).Count > 0)
        {
            if (driver.FindElement(element).Displayed)
                return true;
            else
                return false;
        }
        else
        {
            return false;
        }
    }

    /// <summary>
    /// Checks if the specified element is on the page and is enabled.
    /// </summary>
    public static bool IsElementEnabled(this IWebDriver driver, By element)
    {
        if (driver.FindElements(element).Count > 0)
        {
            if (driver.FindElement(element).Enabled)
                return true;
            else
                return false;
        }
        else
        {
            return false;
        }
    }

それが役に立てば幸い。

于 2013-07-04T14:09:53.060 に答える