在正常测试期间,在每条指令中执行并行def

时间:2014-06-06 15:10:40

标签: javascript cucumber watir

让我们想象一下,我有一个正常的自动化测试,Watir和Cucumber会进入网页,做一些事情,然后结束。每次点击和每次微操作后我都会对场景进行操作(让我们说正常步骤包含几个微操作),我想做一个检查。

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

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

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

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

1 个答案:

答案 0 :(得分: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方法中的内容。您可能需要也可能不需要对其进行一些更改,以便听众可以使用它。