如何检查元素是否可见

How to check if element is visible or not

需要您的帮助来检查特定元素是否可见。 在下面的代码中,我传递了错误的 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.
                    }



        }



}

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

org.openqa.selenium.NoSuchElementException

而不是java.util.NoSuchElementException

或者,您可以使用 driver.findElements 来确定页面上是否存在该元素,而无需使用 NoSuchElementException。

为此,您将使用:

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

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

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

WebDriverWait wait = new WebDriverWait(driver,30);

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

if(isNotVisible) {
   // do stuff
}
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());
          }
}