我想为硒红宝石做一个猴子补丁。
以下是我关注的article。
但是,当我确定自己的代码时:
module Selenium
module WebDriver
module Driver
module CookieManagement
# This is the same as Driver.get, but I just want it to save all the domains it goes to in an easily accessible variable
def get_and_save(url)
puts "You've asked me to get, so I am getting"
get(url)
end
end
end
end
end
我收到错误:
Uncaught exception: Driver is not a module
我知道发生这种情况是因为我已经定义了一个Driver类,所以没关系。但那么文章中的这个家伙怎么没有发生,更重要的是,接受的解决方法是什么呢?
更新
我想我不能不包括我所包含的代码行导致上述错误。
Selenium::WebDriver::Driver.include Selenium::WebDriver::Driver::CookieManagement
此外,它只是红宝石。 没有涉及铁路。
答案 0 :(得分:0)
好的,所以使用这个答案When monkey patching a method, can you call the overridden method from the new implementation?
我想出了:
require 'selenium-webdriver'
module CookieManagement
def get_and_save(url)
puts "You told me to get, so I am getting"
get(url)
end
end
class Selenium::WebDriver::Driver
include CookieManagement
end
然后我require_relative
而不是需要该功能的.rb文件中的标准selenium-webdriver gem。