Class: Selenium::WebDriver::Driver
| Relationships & Source Files | |
| Extension / Inclusion / Inheritance Descendants | |
|
Subclasses:
|
|
| Super Chains via Extension / Inclusion / Inheritance | |
|
Instance Chain:
self,
TakesScreenshot,
SearchContext
|
|
| Inherits: | Object |
| Defined in: | rb/lib/selenium/webdriver/common/driver.rb |
Overview
The main class through which you control the browser.
Constant Summary
SearchContext - Included
Class Method Summary
- .for(browser, opts = {}) ⇒ Driver Internal use only
-
.new(bridge: nil, listener: nil) ⇒ Driver
constructor
Internal use only
A new
Driverinstance with the given bridge.
Instance Attribute Summary
- #bridge readonly private
Instance Method Summary
-
#[](sel) ⇒ WebDriver::Element
Get the first element matching the given selector.
- #action ⇒ ActionBuilder
- #add_virtual_authenticator(options) ⇒ VirtualAuthenticator
-
#all
driver.all(class: 'bar') #=> [#<WebDriver::Element:0x1011c3b88, ...].
-
#bidi ⇒ BiDi
Returns the
::Selenium::WebDriverBiDi connection for this session. - #browser
- #capabilities
-
#close
Close the current window, or the browser if no windows are left.
-
#current_url ⇒ String
Get the URL of the current page.
-
#execute_async_script(script) ⇒ WebDriver::Element, ...
Execute an asynchronous piece of JavaScript in the context of the currently selected frame or window.
-
#execute_script(script) ⇒ WebDriver::Element, ...
Execute the given JavaScript.
-
#first
driver.first(id: 'foo').
-
#get(url)
Opens the specified URL in the browser.
- #inspect
- #manage ⇒ Manager
- #navigate ⇒ Navigation
- #network ⇒ Network
-
#page_source ⇒ String
Get the source of the current page.
-
#quit
Quit the browser.
- #ref Internal use only
- #script ⇒ Script
-
#status ⇒ Hash
information about whether a remote end is in a state in which it can create new sessions, and may include additional meta information.
- #switch_to ⇒ TargetLocator
-
#title ⇒ String
Get the title of the current page.
-
#window_handle ⇒ String
Get the current window handle.
-
#window_handles ⇒ Array
Get the window handles of open browser windows.
- #add_extensions(browser) private
- #create_bridge(caps:, http_client:) private
- #screenshot private
TakesScreenshot - Included
| #save_screenshot | Save a PNG screenshot of the viewport to the given path. |
| #screenshot_as | Return a PNG screenshot in the given format as a string. |
SearchContext - Included
| #find_element | Find the first element matching the given arguments. |
| #find_elements | Find all elements matching the given arguments. |
| #extract_args | |
Constructor Details
.new(bridge: nil, listener: nil) ⇒ Driver
A new Driver instance with the given bridge.
End users should use Selenium::WebDriver.for instead of using this directly.
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 71
def initialize(bridge: nil, listener: nil, **) @devtools = nil bridge ||= create_bridge(**) @bridge = listener ? Support::EventFiringBridge.new(bridge, listener) : bridge add_extensions(@bridge.browser) end
Class Method Details
.for(browser, opts = {}) ⇒ Driver
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 44
def for(browser, opts = {}) case browser when :chrome, :chrome_headless_shell Chrome::Driver.new(**opts) when :internet_explorer, :ie IE::Driver.new(**opts) when :safari Safari::Driver.new(**opts) when :firefox, :ff Firefox::Driver.new(**opts) when :edge, :microsoftedge, :msedge Edge::Driver.new(**opts) when :remote Remote::Driver.new(**opts) else raise ArgumentError, "unknown driver: #{browser.inspect}" end end
Instance Attribute Details
#bridge (readonly, private)
[ GitHub ]# File 'rb/lib/selenium/webdriver/common/driver.rb', line 331
attr_reader :bridge
Instance Method Details
#[](sel) ⇒ WebDriver::Element
Get the first element matching the given selector. If given a String or Symbol, it will be used as the id of the element.
Examples:
driver['someElementId'] #=> #<WebDriver::Element:0x1011c3b88>
driver[:tag_name => 'div'] #=> #<WebDriver::Element:0x1011c3b88>
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 306
def [](sel) sel = {id: sel} if sel.is_a?(String) || sel.is_a?(Symbol) find_element sel end
#action ⇒ ActionBuilder
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 145
def action(**) bridge.action(**) end
#add_extensions(browser) (private)
[ GitHub ]# File 'rb/lib/selenium/webdriver/common/driver.rb', line 344
def add_extensions(browser) extensions = case browser when :chrome, :chrome_headless_shell, :msedge, :microsoftedge Chromium::Driver::EXTENSIONS when :firefox Firefox::Driver::EXTENSIONS when :safari, :safari_technology_preview Safari::Driver::EXTENSIONS when :ie, :internet_explorer IE::Driver::EXTENSIONS else [] end extensions.each { |extension| extend extension } end
#add_virtual_authenticator(options) ⇒ VirtualAuthenticator
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 267
def add_virtual_authenticator() bridge.add_virtual_authenticator() end
#all
driver.all(class: 'bar') #=> [#<WebDriver::Element:0x1011c3b88, ...]
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 292
alias all find_elements
#bidi ⇒ BiDi
Returns the ::Selenium::WebDriver BiDi connection for this session.
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 100
def bidi @bridge.bidi end
#browser
[ GitHub ]# File 'rb/lib/selenium/webdriver/common/driver.rb', line 312
def browser bridge.browser end
#capabilities
[ GitHub ]# File 'rb/lib/selenium/webdriver/common/driver.rb', line 316
def capabilities bridge.capabilities end
#close
Close the current window, or the browser if no windows are left.
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 202
def close bridge&.close end
#create_bridge(caps:, http_client:) (private)
[ GitHub ]
#current_url ⇒ String
Get the URL of the current page
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 163
def current_url bridge.url end
#execute_async_script(script) ⇒ WebDriver::Element, ...
Execute an asynchronous piece of JavaScript in the context of the currently selected frame or window. Unlike executing execute_script (synchronous JavaScript), scripts executed with this method must explicitly signal they are finished by invoking the provided callback. This callback is always injected into the executed function as the last argument.
#execute_script(script) ⇒ WebDriver::Element, ...
Execute the given JavaScript
#first
driver.first(id: 'foo')
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 286
alias first find_element
#get(url)
Opens the specified URL in the browser.
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 153
def get(url) navigate.to(url) end
#inspect
[ GitHub ]#manage ⇒ Manager
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 136
def manage bridge.manage end
#network ⇒ Network
#page_source ⇒ String
Get the source of the current page
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 183
def page_source bridge.page_source end
#quit
Quit the browser
#ref
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 325
def ref [:driver, nil] end
#screenshot (private)
[ GitHub ]# File 'rb/lib/selenium/webdriver/common/driver.rb', line 340
def screenshot bridge.screenshot end
#script ⇒ Script
#status ⇒ Hash
information about whether a remote end is in a state in which it can create new sessions, and may include additional meta information.
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 89
def status @bridge.status end
#switch_to ⇒ TargetLocator
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 127
def switch_to @switch_to ||= WebDriver::TargetLocator.new(bridge) end
#title ⇒ String
Get the title of the current page
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 173
def title bridge.title end
#window_handle ⇒ String
Get the current window handle
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 223
def window_handle bridge.window_handle end
#window_handles ⇒ Array
Get the window handles of open browser windows.
# File 'rb/lib/selenium/webdriver/common/driver.rb', line 213
def window_handles bridge.window_handles end