【问题标题】:Can watir-webdriver capture console errors?Watir-webdriver 可以捕获控制台错误吗?
【发布时间】:2016-06-30 14:18:55
【问题描述】:

我想知道 watir-webdriver 是否能够记录任何控制台错误的输出? 这相当于在浏览器中手动打开控制台并在页面加载时观察 JS 错误。我可以通过 watir-webdriver 捕获这个并记录/错误吗?

【问题讨论】:

    标签: watir watir-webdriver


    【解决方案1】:

    如果它对某人有帮助 - 这个解决方案应该有效:

    def check_console_log
        console_log = @browser.driver.manage.logs.get(:browser)
        if console_log != nil
          raise(console_log)
        end
    end
    

    【讨论】:

    • 你确定这是对的吗?我在文档中没有看到get_log
    • 当然。现在我在我的项目中使用这个功能,在步骤失败后我正在检查控制台日志并写入日志文件。此方法在 module Selenium module WebDriver module Remote def getLog(type) data = execute :getLog, {}, :type => type.to_s Array(data).map do |l| LogEntry.new l.fetch('level'), l.fetch('timestamp'), l.fetch('message') end end 中描述
    【解决方案2】:

    当结合使用 watir-webdriver 和 Cucumber 时,错误(如果有)会输出到一个格式很好的 html 文件,并且包含 watir-webdriver 错误。

    这可以通过将以下标志添加到 cucumber.yml 中的默认配置文件来完成:

    --color --format pretty --format html -o results.html此文件的更多信息here.这里有一些background on Cucumber

    但是,如果您仅从控制台使用 watir-webdriver,则可以通过执行以下操作将 watir-webdriver 错误重定向到文件:

    $ ruby your_watir_script.rb 2> watir_debug.log #watir outputs errors as stderr

    在大多数情况下,如果 watir 中的某些内容失败(例如,找不到元素),那么之后的所有内容也会失败,这就是为什么让 Cucumber 之类的东西在场景基础上驱动自动化很有用。

    【讨论】:

    • 那么这些错误是 watir 本身抛出的错误正确吗? watir 是否已经从页面捕获 Javascript 错误并记录它们?
    【解决方案3】:

    我的解决方案基于Kirikami's answer,不需要 Cucumber。此方法仅打印 javascript 控制台 Errors(无警告、信息、日志或调试)。

    def print_js_errors
      log = @browser.driver.manage.logs.get(:browser)
      errors = log.select{ |entry| entry.level.eql? 'SEVERE' }
      if errors.count > 0
        javascript_errors = errors.map(&:message).join("\n")
        raise javascript_errors
      end
    end
    

    然后,如果你使用 rspec,你可以这样做:

    RSpec.configure do |config|
      config.after :each do
        print_js_errors
      end
    end
    

    优点:

    1. 对于Pass 的测试,您仍然可以得到 RSpec 的正常输出
    2. 对于 Fail 的测试,您仍然会收到 watir-webdriver 抛出的任何错误消息(例如超时、未找到元素等)
    3. 当抛出 javascript 错误时,它会被添加到 RSpec 测试结果输出中

    缺点:

    1. print_js_errors 的前两行在每次测试后执行

    【讨论】:

      猜你喜欢
      • 2018-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-25
      相关资源
      最近更新 更多