watir-webdriver 可以捕获控制台错误吗?

发布于 2024-12-03 08:28:47 字数 114 浏览 1 评论 0原文

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

I am wondering if watir-webdriver as the ability to log the output of any console errors?
This would be equivalent to manually opening the console in a browser and watching for JS errors as a page loads. Can I capture this through watir-webdriver and log/error on?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

温馨耳语 2024-12-10 08:28:47

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

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

If it will be helpful to someone - this solution should work:

def check_console_log
    console_log = @browser.driver.manage.logs.get(:browser)
    if console_log != nil
      raise(console_log)
    end
end
雨轻弹 2024-12-10 08:28:47

当将 watir-webdriver 与 Cucumber 结合使用时,错误(如果有)会输出到格式非常良好且包含 watir-webdriver 错误的 html 文件。

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

--color --format Pretty --format html -o results.html 有关此文件的更多信息 这里。 这里有一些Cucumber 背景

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

$ ruby​​ your_watir_script.rb 2> watir_debug.log #watir 将错误输出为 stderr

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

When using watir-webdriver in combination with Cucumber, the errors, if any, output to an html file that is very well formatted and includes watir-webdriver errors.

This can be accomplished by adding the following flags to your default profile in cucumber.yml:

--color --format pretty --format html -o results.html More info on this file here. Here's some background on Cucumber.

However, if you're using only watir-webdriver from the console, you can redirect watir-webdriver errors to a file by doing the following:

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

In most cases, if something in watir fails (e.g an element can't be found) then everything after that will also fail, which is why its useful to have something like Cucumber drive your automation on a scenario basis.

凤舞天涯 2024-12-10 08:28:47

我的解决方案基于 Kirikami 的答案,不需要 Cucumber。此方法仅打印 javascript 控制台错误(没有警告、信息、日志或调试)。

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. 对于 通过 的测试,您仍然会获得 RSpec 的正常输出 对于
  2. 通过的测试,您仍然会收到 watir-webdriver 抛出的任何错误消息失败(例如超时、未找到元素等)
  3. 当抛出 javascript 错误时,它会添加到 RSpec 测试结果输出中。

缺点:

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

I based my solution on Kirikami's answer, no Cucumber necessary. This approach prints javascript console Errors only (no warnings, info, logs, or debug).

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

Then, if you're using rspec, you can do this:

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

Pros:

  1. You still get RSpec's normal output for tests that Pass
  2. You still get any error messages thrown by watir-webdriver for tests that Fail (e.g. timeout, element not found, etc.)
  3. When a javascript error is thrown, it gets added to the RSpec test results output

Cons:

  1. The first two lines of print_js_errors are executed after each test
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文