Java 如何使用selenium 2验证页面上是否存在web元素

Java 如何使用selenium 2验证页面上是否存在web元素,java,selenium-webdriver,Java,Selenium Webdriver,我正在尝试使用SeleniumWebDriver2工具实现一个测试 应用程序具有元素,这些元素的存在是不可预测的。好啊在大多数情况下,它们都出现在页面上。但在某些情况下,情况并非如此。下面的方法单击不可预测的元素 public void clickTypeAheadDropdown(String typeAheadItem) { String xPathItemSelector = "//div[@class='gwt-SuggestBoxPopup']//td[text()='" +

我正在尝试使用SeleniumWebDriver2工具实现一个测试

应用程序具有元素,这些元素的存在是不可预测的。好啊在大多数情况下,它们都出现在页面上。但在某些情况下,情况并非如此。下面的方法单击不可预测的元素

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)

您知道,我如何测试页面上是否存在元素


另外,我假设捕获“Element Not Found”(未找到元素)异常不是一个好主意,因为它是在测试超时时引发的。我通常使用以下方法来测试元素是否存在

public boolean isElementPresent(By element) {
   try {
       driver.findElement(element);
       return true;
   } catch (NoSuchElementException e) {
       return false;
   }
}
还可以在
WebDriver
上配置等待时间:

webDriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

我不知道还有什么其他方法可以做到这一点。因为你的页面可能会加载不可预测的时间,你不得不等待并使用超时。

我通常使用以下方法来测试元素是否存在

public boolean isElementPresent(By element) {
   try {
       driver.findElement(element);
       return true;
   } catch (NoSuchElementException e) {
       return false;
   }
}
还可以在
WebDriver
上配置等待时间:

webDriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

我不知道还有什么其他方法可以做到这一点。由于您的页面可能会加载不可预测的时间,因此您必须等待并使用超时。

您也可以使用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;
        }
    }
//
///检查指定的元素是否在页面上。
/// 
公共静态bool IsElementPresent(此IWebDriver驱动程序,按元素)
{
if(driver.FindElements(element.Count>0)
返回true;
其他的
返回false;
}
/// 
///检查指定的元素是否在页面上并显示。
/// 
公共静态bool IsElementDisplayed(此IWebDriver驱动程序,按元素)
{
if(driver.FindElements(element.Count>0)
{
if(驱动程序。FindElement(元素)。显示)
返回true;
其他的
返回false;
}
其他的
{
返回false;
}
}
/// 
///检查指定元素是否在页面上并已启用。
/// 
公共静态bool已启用(此IWebDriver驱动程序,按元素)
{
if(driver.FindElements(element.Count>0)
{
if(driver.FindElement(element).Enabled)
返回true;
其他的
返回false;
}
其他的
{
返回false;
}
}

希望有帮助。

您也可以使用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;
        }
    }
//
///检查指定的元素是否在页面上。
/// 
公共静态bool IsElementPresent(此IWebDriver驱动程序,按元素)
{
if(driver.FindElements(element.Count>0)
返回true;
其他的
返回false;
}
/// 
///检查指定的元素是否在页面上并显示。
/// 
公共静态bool IsElementDisplayed(此IWebDriver驱动程序,按元素)
{
if(driver.FindElements(element.Count>0)
{
if(驱动程序。FindElement(元素)。显示)
返回true;
其他的
返回false;
}
其他的
{
返回false;
}
}
/// 
///检查指定元素是否在页面上并已启用。
/// 
公共静态bool已启用(此IWebDriver驱动程序,按元素)
{
if(driver.FindElements(element.Count>0)
{
if(driver.FindElement(element).Enabled)
返回true;
其他的
返回false;
}
其他的
{
返回false;
}
}

希望有帮助。

要检查元素是否存在,可以使用以下代码:

if(driver.findElements(By.xpath("value")).size() != 0){
System.out.println("Element is Present");
}else{
System.out.println("Element is Absent");
}

要检查元素是否存在,可以使用以下代码:

if(driver.findElements(By.xpath("value")).size() != 0){
System.out.println("Element is Present");
}else{
System.out.println("Element is Absent");
}