ruby - 如何知道超时是由于未出现的元素还是 400..500 错误页面引起的

标签 ruby cucumber watir page-object-gem

在使用 Watir 和 page-object-gem 执行测试套件期间,我们可能会遇到超时错误。这些超时错误可能由以下原因引起:

  • 一个页面,一旦成功加载,由于软件错误而没有我们正在寻找的元素。
  • 返回 400 或 500 错误代码的页面。这种情况下,显然out元素没有出现,输出和之前一样,超时错误。

我需要知道超时是因为该元素没有出现在正确加载的页面中,还是因为我们收到 400 或 500 错误代码,当然,该元素未找到。

似乎唯一的逻辑解决方案可能是创建一个自定义等待函数来检查 Net::HTTP 状态代码是否在 200..399 之间,继续执行并继续使用 page-object-gem wait_until 或者如果状态代码在 400..599 之间,引发错误页面异常。

问题是:是否有处理页面状态代码的钩子(Hook)或等待方法?

提前致谢!

最佳答案

没有现成的 Hook 可以为您完成,但页面对象有 Hook ,您可以使用它来实现这一目标。

  • initialize_accessors(在导航到页面之前发生)
  • initialize_page(在导航到页面后发生)

换句话说,您可以定义 initialize_page 方法,该方法在导航到页面后被调用,并让它检查页面是否有错误,如果发现错误则快速失败。

关于ruby - 如何知道超时是由于未出现的元素还是 400..500 错误页面引起的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22836129/

相关文章:

ruby - 使用 Ruby Watir,如何选择 ID 不断变化的复选框?

ruby-on-rails - 如何在 Ruby 中预填充函数的参数?

Java cucumber -java.lang.NoSuchMethodError : gherkin. parser.Parser.parse

cucumber - 指定cucumber中的特征文件位置

用于选择浏览器的 Cucumber 配置文件和全局 Hook

tinymce - 使用 watir-webdriver 自动化时如何处理 tinyMCE?

javascript - 如何执行复杂的Javascript代码?

ruby - 在 Ruby 中为 REST API 编写单元测试

ruby-on-rails - 是否有任何额外的注入(inject)速记

ruby-on-rails - 在 Rails 3 中进行身份验证最常用的方法是什么?