Capybara:方法'page'不适用于创建的模块

时间:2015-06-08 07:36:05

标签: selenium capybara

我正在使用Cucumber和Selenium webdriver,Ruby 2.0。

当我使用简单的def时,一切正常,但是当我尝试创建模块时

module ELEM_TEXT_CONVERTING

  def self.convert(element1, element2)
    element1_blink = human2selector(element1)
    element2_blink = human2selector(element2)

    blink_bckgr(element1_blink, element2_blink)
    ...
end

blink_bckgr启动以下脚本

page.execute_script <<-EOS
    var color_orig1 = document.querySelector('#{elem1}').style.backgroundColor;
    var color_orig2 = document.querySelector('#{elem2}').style.backgroundColor;
    window.color_orig1 = color_orig1;
    window.color_orig2 = color_orig2;
    document.querySelector('#{elem1}').style.backgroundColor = "#FF0000";
    document.querySelector('#{elem2}').style.backgroundColor = "#FF0000";
  EOS

最后我收到一个错误:

undefined local variable or method `page' for ELEM_TEXT_CONVERTING:Module
./features/step_definitions/<...>.rb:22:in `blink_bckgr'

这里的诀窍是什么?我是否需要在新模块中添加一些标准库?或者什么?先谢谢。

1 个答案:

答案 0 :(得分:0)

要求.rb初始化capybara,在rspec中你通常把它放在spec_helper等......

然后,一旦你有了要求,你甚至不需要页面...你应该能够直接调用execute_script ......

你可以采取一些措施来确保问题是水豚实例缺乏可见性,可以通过以下方式调用:

Capybara.page.execute_script

如果有效,则上述建议可以解决您的问题。