【问题标题】:During normal test, execute a parallel def in every instruction在正常测试期间,在每条指令中执行一个并行def
【发布时间】:2014-06-06 15:10:39
【问题描述】:

假设我有一个使用 Watir 和 Cucumber 的正常自动化测试,该测试进入网页,执行一些操作,然后结束。在我对场景进行的每一次点击和每一次微操作之后(假设一个正常的步骤包含几个微操作),我都想做一个检查。

检查是在 Firefox 控制台中查找 JavaScript 错误(我已经有一个系统用于读取 FF 控制台的显示)。我希望在自动化的每个操作之后都进行这项检查。

我现在使用频率最高的是:

AfterStep do |scenario|
  raise get_js_error_feedback() unless get_js_error_feedback().empty?
end

但这还不够。有什么想法吗?

【问题讨论】:

  • 好吧,当然,我需要一些优雅的东西来启动“检查 JS”功能,但我不想在每个方法的每个函数中都编写调用。

标签: javascript cucumber watir


【解决方案1】:

要更细化,您可以使用Selenium-Webdriver's AbstractEventListener

您可以创建一个侦听器,在每次点击操作(和其他事件)之后执行一个操作:

class JavascriptListener < Selenium::WebDriver::Support::AbstractEventListener
  def after_click(element, driver)
    puts 'after_click'
  end
end

然后您需要将该侦听器传递给 Watir::Browser:

browser = Watir::Browser.new :firefox, :listener => JavascriptListener.new()

当你执行点击动作时,你在after_click方法中的代码会被执行:

browser.button.click
#=> 'after_click'

我不确定您的 get_js_error_feedback 方法中有什么。您可能需要也可能不需要对其进行一些更改,以便您的听众可以使用它。

【讨论】:

    猜你喜欢
    • 2021-01-01
    • 1970-01-01
    • 2020-08-29
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多