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