从selenium中的isDisplayed()中捕获NoSuchElementException?

时间:2012-01-24 16:49:01

标签: scala selenium

我正在尝试创建一个函数来捕获org.openqa.selenium.NoSuchElementException,这是我在scala中的实现:

def doesElementExists() = {    
  try {
    //as long as isDisplayed() returns a boolean value, it means the element exists in the html code
    seleniumElement.isDisplayed()
    true
  } catch {
    case element_not_found_exception: org.openqa.selenium.NoSuchElementException => {
      false
    }
  }
}

然而,一旦我检查了一个不存在的元素,我希望该函数返回false,它就会被吹掉然后扔掉

org.openqa.selenium.NoSuchElementException, 
: Unable to locate element: {"method":"id","selector":"nonexistent-element"};

我想知道为什么catch块没有处理异常?

1 个答案:

答案 0 :(得分:0)

IsDisplayed是已找到的元素的属性。你在做什么基本上就是这个(C#代码):

var element = driver.FindById("nonexistent-element"); //<---This is what throws NoSuchElementException
try
{
    var displayed = element.IsDisplayed;
}
catch(NoSuchElementException)
{
}

为了达到你想要的效果,你的doesElementExists函数应该将定位器作为参数,并围绕查找元素包装try-catch语句。