我正在使用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'
这里的诀窍是什么?我是否需要在新模块中添加一些标准库?或者什么?先谢谢。
答案 0 :(得分:0)
要求.rb初始化capybara,在rspec中你通常把它放在spec_helper等......
然后,一旦你有了要求,你甚至不需要页面...你应该能够直接调用execute_script ......
你可以采取一些措施来确保问题是水豚实例缺乏可见性,可以通过以下方式调用:
Capybara.page.execute_script
如果有效,则上述建议可以解决您的问题。