我想要什么?
我想从驱动程序实例中提取所有的功能,一旦它被创建。
置>我正在创建一个新的驱动实例。
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
方法。我需要对chrome
和remote
都这样做。
注意:这两个片段出现在不同的文件中。
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