当前位置:  开发笔记 > 编程语言 > 正文

如何覆盖类方法

如何解决《如何覆盖类方法》经验,为你挑选了1个好方法。

我想覆盖该方法Selenium::WebDriver.for.这是我试过的:

module SeleniumWebDriverExtension
  def self.for(browser, *args)
    if browser != :phantomjs
      super(browser, *args)
    else
      options = {
          "phantomjs.cli.args" => ["--ssl-protocol=tlsv1"]
      }
      capabilities = Selenium::WebDriver::Remote::Capabilities.phantomjs(options)
      super(browser, desired_capabilities: capabilities)
    end
  end
end

Selenium::WebDriver.prepend(SeleniumWebDriverExtension)

但是我在Selenium::Webdriver.for(:phantomjs)调用时遇到错误.

NoMethodError: super: no superclass method `for' for Selenium::WebDriver::Driver:Class

如何从重写方法调用原始方法?



1> sawa..:
module SeleniumWebDriverExtension
  def for(browser, *args)
    ...
  end
end

Selenium::WebDriver.singleton_class.prepend(SeleniumWebDriverExtension)

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有