【问题标题】:Selenium PHP Webdriver - Not Catching Exceptions?Selenium PHP Webdriver - 不捕获异常?
【发布时间】:2016-09-17 08:21:51
【问题描述】:

使用 PHP Webdriver 捕获异常的正确方法是什么?我有这样的事情:

try {
    // Throws a NoSuchElementException if id doesn't exist 
    $driver->findElement(WebDriverBy::id('loggedIn'));
    return TRUE;
}
catch (NoSuchElementException $e) {
    // id='loggedIn' doesn't exist
    return FAlSE;
}
catch (Exception $e)
{
    // Unknown exception
    return FALSE;
}

但是,当我到达一个页面但没有找到我正在寻找的带有id 的元素时,我收到以下错误:

未捕获的 Facebook\WebDriver\Exception\NoSuchElementException: 无法 定位元素:#loggedIn

我不确定为什么我的代码被包裹在一个 try-catch 块中。

【问题讨论】:

    标签: php selenium selenium-webdriver


    【解决方案1】:

    我建议您避免使用 try..catch 并检查该元素是否在页面上而不会出现异常,只需尝试使用 findElements 代替它会返回具有匹配定位器的所有元素的数组,如果没有则返回空数组找到,所以您只需检查数组计数以确定该元素是否存在,如下所示:-

    if (count($driver->findElements(WebDriverBy::id("loggedIn"))) > 0) 
    {
      return TRUE;
    }else 
    {
      return FALSE;
    }
    

    【讨论】:

    • 这对于findElement 来说是一种可能的解决方法,但它不能解释为什么我无法捕获异常。
    • 好的,请确保您正确理解NoSuchElementException。首先验证您是否为NoSuchElementException导入了正确的类??
    • 还要确保此代码或其他不在try..catch块内的代码抛出异常??
    【解决方案2】:

    这对我有用,希望对某人有所帮助

    try {
        ...
    } catch (Exception\NoSuchElementException) {
        ...
    }
    

    【讨论】:

      【解决方案3】:

      我不确定,为什么异常和特定异常都不起作用,但是:

      捕获 (WebDriverException $e)

      为我工作)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-01
        • 1970-01-01
        • 2015-05-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多