提问人:saurav 提问时间:3/31/2023 更新时间:3/31/2023 访问量:28
Ruby:Monkey 补丁 selenium 驱动程序
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
chrome
remote
注意:这 2 个片段存在于不同的文件中。
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
答:
0赞
Luke Hill
3/31/2023
#1
您几乎可以随时访问这些功能。在普通的硒(你似乎正在使用)中,你只是这样做
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
评论