首页 文章

Ruby / Webdriver:处理日志输出时出错

提问于
浏览
1

这是我目前正在做的事情:

def wait_for(timeout = 5)
    Selenium::WebDriver::Wait.new(:timeout => timeout).until { yield }
            rescue Selenium::WebDriver::Error::TimeOutError => e
            puts 'Timeout Error'
            rescue Selenium::WebDriver::Error::NoSuchElementError => ex
            puts 'No Such Element Error'
  end

Two questions:

1)为什么两次显示超时错误?它应该超时并结束测试

2)如何让它不向我显示底部的所有额外信息?理想情况下,我想要的只是说“超时”或“没有这样的元素”,就是这样 . **

我的日志吐出了这个:

加载套件C:/ 2oh / qt开始首次运行超时错误超时错误E ================================= ================================================== ================================================== ================================================== =================错误:test_18a(测试):Selenium :: WebDriver :: Error :: NoSuchElementError:没有这样的元素(会话信息:chrome = 43.0.2357.134)(驱动程序) info:chromedriver = 2.15.322448(52179c1b310fec1797c81ea9a20326839860b7d3),platform = Windows NT 6.1 SP1 x86_64)C:/Ruby22/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.46.2/lib/selenium/webdriver/ remote / response.rb:71:在assert_ok'C:/Ruby22/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.46.2/lib/selenium/webdriver/remote/response.rb:34:初始化'C:/Ruby22/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.46.2/lib/selenium/webdriver/remote/http/common.rb:78:in new'C:/ Ruby22 / lib / ruby / gems / 2.2.0 / gems / selenium-webdriver-2.46.2 / lib / selenium / webdriver / remote / http / common.rb:78:在create_respon中se'C:/Ruby22/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.46.2/lib/selenium/webdriver/remote/http/default.rb:90:in request'C:/ Ruby22 /lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.46.2/lib/selenium/webdriver/remote/http/common.rb:59:in调用'C:/ Ruby22 / lib / ruby / gems /2.2.0/gems/selenium-webdriver-2.46.2/lib/selenium/webdriver/remote/bridge.rb:657:in raw_execute'C:/Ruby22/lib/ruby/gems/2.2.0/gems/selenium -webdriver-2.46.2 / lib / selenium / webdriver / remote / bridge.rb:635:执行'C:/Ruby22/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.46.2/lib /selenium/webdriver/remote/bridge.rb:603:in find_element_by'C:/Ruby22/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.46.2/lib/selenium/webdriver/common/search_context .rb:61:在find_element'C:/2oh/qttests.rb:28:in test_hdesrbf'C:/2oh/qt.rb:13:intest_18a'10:11:def test_18a 12:put“First Run”=> 13:test_hdesrbf 14:结束15:16:

1 回答

  • 1

    您看到的输出告诉您有关正在拯救的错误的更多信息 . 不要以为有任何逃避它,虽然它很方便,因为它会告诉你什么代码行失败,以及为什么 . 我实际上并不是100%确定你为什么要简化错误!

    您两次看到错误的原因是因为您没有告诉程序结束 . 你说'Hey, rescue this error type and output this text.'你没有告诉它停止 . 它会继续,我想超时找到下一个元素?要解决此问题,请使用 raise ,而不是使用 puts 输出错误文本 . 一旦文本输出,这将暂停程序 . 例如

    def wait_for(timeout = 5)
      Selenium::WebDriver::Wait.new(:timeout => timeout).until { yield }
      rescue Selenium::WebDriver::Error::TimeOutError
        raise 'Timeout Error'
      rescue Selenium::WebDriver::Error::NoSuchElementError
        raise 'No Such Element Error'
    end
    

相关问题