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