Ruby: Monkey patch selenium driver



我想要什么?

我想从驱动程序实例中提取所有的功能,一旦它被创建。

置>我正在创建一个新的驱动实例。

def create_my_selenium_driver
@driver = Selenium::WebDriver.for :chrome
puts '[DRIVER CREATED] '
end
create_my_selenium_driver()

我试过什么了?

class Selenium::WebDriver::Driver
bridge = instance_method(:create_bridge)
define_method(:create_bridge) do
driver = bridge.bind(self).call
$driver = driver
end
end

我正在尝试上面的代码,但无法覆盖create_bridge方法。我需要对chromeremote都这样做。

注意:这两个片段出现在不同的文件中。

PS:我的用例是覆盖它和不通过任何方法传递已经创建的驱动程序实例。我想拦截任何时候任何硒驱动程序被创建在我的系统。

有谁能帮我实现吗?提前感谢!!

class Selenium::WebDriver::Driver
bridge = instance_method(:create_bridge)
define_method(:create_bridge) do
driver = bridge.bind(self).call
$driver = driver
end
end

如前所述,我已经尝试使用instance_method

您几乎可以在任何时候访问这些功能。在常规selenium(您似乎正在使用)中,只需执行

0> driver = Selenium::WebDriver.for :chrome
=> #<Selenium::WebDriver::Chrome::Driver:0x..f8b84161a7230ca browser=:chrome>
0> driver.capabilities
=> #<Selenium::WebDriver::Remote::Capabilities:0x00007fc886665f98 @capabilities={:timeouts=>{:implicit=>0, :page_load=>300000, :script=>30000}, :browser_name=>"chrome", :browser_version=>"111.0.5563.146", :platform_name=>"linux", :accept_insecure_certs=>false, :page_load_strategy=>"normal", :set_window_rect=>true, :unhandled_prompt_behavior=>"dismiss and notify", :strict_file_interactability=>false, "chrome"=>{"chromedriverVersion"=>"111.0.5563.64 (c710e93d5b63b7095afe8c2c17df34408078439d-refs/branch-heads/5563@{#995})", "userDataDir"=>"/tmp/.com.google.Chrome.PtFi9k"}, "goog:chromeOptions"=>{"debuggerAddress"=>"localhost:42993"}, "networkConnectionEnabled"=>false, "webauthn:extension:credBlob"=>true, "webauthn:extension:largeBlob"=>true, "webauthn:extension:minP…

或者如果你想在运行时执行那么这里的#initialize方法就是你想要查找的

module Selenium
module WebDriver
module Chrome
class Driver < Chromium::Driver

相关内容

  • 没有找到相关文章

最新更新