如何检查元素是否可见

时间:2015-02-19 18:09:12

标签: java selenium selenium-webdriver

需要您的帮助以检查特定元素是否可见。 在下面的代码中我传递了错误的ID,以便系统在正确的元素的情况下抛出NoSuchElementException它给出了正确的答案。但是在错误元素的情况下,它会抛出异常而不是处理它。

请帮忙 -

package com;

import java.util.NoSuchElementException;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.Test;
import org.testng.asserts.SoftAssert;

public class Windowgoogle {
    static WebDriver driver;
    static String baseUrl="http:/www.google.co.in";

    @Test
    public void openBrowser()
    {
    driver=new FirefoxDriver();
        driver.get(baseUrl);

        System.out.println(existsElement("qo"));//Adding Invalid ID
    }   

        private boolean existsElement(String id) 
        {
            boolean chk = false;
            try {

                    chk=driver.findElement(By.name(id)).isDisplayed();
                    return chk;
                }  catch (NoSuchElementException e)
                    {
                    return false;//Control should go to catch but exception is not getting handled properly.
                    }



        }



}

4 个答案:

答案 0 :(得分:2)

您输入了错误的NoSuchElementException。你应该导入

  

org.openqa.selenium.NoSuchElementException

而不是java.util.NoSuchElementException

答案 1 :(得分:2)

或者,您可以使用driver.findElements作为确定元素是否存在于页面上而不使用NoSuchElementException的方法。

为此您将使用:

private boolean existsElement(String id) {
    return !driver.findElements(By.name(id)).isEmpty();
}

当方法findElements找不到与指定定位符匹配的任何元素时,它返回一个空列表。这是捕获NoSuchElementException的一种非常常见的替代方法。

答案 2 :(得分:1)

虽然捕获NoSuchElementException有效,但它并不是一个优雅的解决方案。想象一下,如果你必须在多个地方拥有这个逻辑。代码将变得臃肿且难以维护。您可以使用ExpectedConditions类中的辅助方法。这就是你如何使用它,

WebDriverWait wait = new WebDriverWait(driver,30);

boolean isNotVisible = wait.until(ExpectedConditions.invisibilityOfElementLocated(By.id("foo")));

if(isNotVisible) {
   // do stuff
}

答案 3 :(得分:-1)

import java.util.NoSuchElementException;
import org.openqa.selenium.*;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.Test;
import org.testng.asserts.SoftAssert;
public class dropdown {
     private static WebDriver driver = new FirefoxDriver() ;
     String Path ="C:\\Users\\VGupta\\Desktop\\testcases\\auto.xlsx";
     @Test
     public void test() throws Exception
    {
            driver.get("http://www.test.com/");
          //Dimension size   = ('900','500');
          driver.manage().window().setSize(new Dimension(1000,1000));
         try{
         driver.findElement(By.id("foo")).click();

          } catch(NoSuchElementException e)
          {
              System.out.println(e.getStackTrace());
          }
}