Class: Appium::Driver
- Inherits:
-
Object
- Object
- Appium::Driver
- Defined in:
- lib/appium_lib/driver.rb
Instance Attribute Summary collapse
-
#appium_debug ⇒ Object
readonly
Boolean debug mode for the Appium Ruby bindings.
-
#appium_device ⇒ Object
readonly
Returns the value of attribute appium_device.
-
#appium_port ⇒ Object
readonly
Returns the value of attribute appium_port.
-
#appium_server_status ⇒ Object
readonly
Appium’s server version.
-
#appium_wait_interval ⇒ Object
readonly
Returns the value of attribute appium_wait_interval.
-
#appium_wait_timeout ⇒ Object
readonly
Returns the value of attribute appium_wait_timeout.
-
#automation_name ⇒ Object
readonly
Returns the value of attribute automation_name.
-
#caps ⇒ Object
readonly
from Core read www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Driver.
-
#core ⇒ Object
readonly
Instance of Appium::Core::Driver.
-
#custom_url ⇒ Object
readonly
Returns the value of attribute custom_url.
-
#default_wait ⇒ Object
readonly
Returns the value of attribute default_wait.
-
#driver ⇒ Driver
readonly
Returns the driver.
-
#global_webdriver_http_sleep ⇒ Object
The amount to sleep in seconds before every webdriver http call.
-
#http_client ⇒ Object
readonly
Returns the value of attribute http_client.
-
#listener ⇒ Object
readonly
Returns the value of attribute listener.
-
#sauce ⇒ Object
readonly
SauceLab’s settings.
-
#sauce_access_key ⇒ Object
readonly
Access Key for use on Sauce Labs.
-
#sauce_endpoint ⇒ Object
readonly
Override the Sauce Appium endpoint to allow e.g.
-
#sauce_username ⇒ Object
readonly
Username for use on Sauce Labs.
Class Method Summary collapse
-
.absolute_app_path(opts) ⇒ String
- Deprecated
-
Converts app_path to an absolute path.
- .convert_to_symbol(value) ⇒ Object
- .get_cap(caps, name) ⇒ Object
Instance Method Summary collapse
-
#action ⇒ Selenium::WebDriver::PointerActions
An entry point to chain W3C actions Read www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Base/Bridge/W3C#action-instance_method.
-
#appium_client_version ⇒ Hash
Returns the client’s version info.
-
#appium_server_version ⇒ Hash
(also: #remote_status)
Returns the server’s version info.
-
#automation_name_is_espresso? ⇒ Boolean
Return true if automationName is ‘Espresso’.
-
#automation_name_is_uiautomator2? ⇒ Boolean
Return true if automationName is ‘uiautomator2’.
-
#automation_name_is_xcuitest? ⇒ Boolean
Return true if automationName is ‘XCUITest’.
- #current_url ⇒ Object
- #device_is_android? ⇒ Boolean
- #device_is_ios? ⇒ Boolean
- #device_is_windows? ⇒ Boolean
-
#driver_attributes ⇒ Object
Returns a hash of the driver attributes.
-
#driver_quit ⇒ void
(also: #quit_driver)
Quits the driver.
-
#element_screenshot(element, png_save_path) ⇒ File
Takes a png screenshot of particular element’s area.
-
#execute_async_script(script, *args) ⇒ Object
Wrap calling selenium webdrier APIs via ruby_core.
-
#execute_driver(script: '', type: 'webdriverio', timeout_ms: nil) ⇒ Appium::Core::Base::Device::ExecuteDriver::Result
Run a set of script against the current session, allowing execution of many commands in one Appium request.
-
#execute_script(script, *args) ⇒ Object
The same as @driver.execute_script.
-
#exists(pre_check = 0, post_check = @default_wait) { ... } ⇒ Boolean
Returns existence of element.
-
#find_element(*args) ⇒ Element
Calls @driver.find_element.
-
#find_element_by_image(png_img_path) ⇒ ::Appium::Core::ImageElement
Return ImageElement if current view has a partial image.
-
#find_elements(*args) ⇒ Array<Element>
Calls @driver.find_elements_with_appium.
-
#find_elements_by_image(png_img_paths) ⇒ [::Appium::Core::ImageElement], ::Appium::Core::Error::CoreError
Return ImageElement if current view has partial images.
- #get(url) ⇒ Object
-
#initialize(opts = {}, global_driver = false) ⇒ Driver
constructor
Creates a new driver.
-
#log_event(vendor:, event:) ⇒ nil
Logs a custom event.
- #log_event=(log_event) ⇒ Object
-
#log_events(type = nil) ⇒ Hash
Returns events with filtering with ‘type’.
- #manage ⇒ Object
- #navigate ⇒ Object
-
#no_wait ⇒ Object
Set implicit wait to zero.
-
#platform_version ⇒ Array<Integer>
Return the platform version as an array of integers.
-
#restart ⇒ Driver
Restarts the driver.
-
#screenshot(png_save_path) ⇒ File
Takes a png screenshot and saves to the target path.
-
#server_url ⇒ String
Get the server url.
-
#set_implicit_wait(wait) ⇒ Object
To ignore error for Espresso Driver.
-
#set_location(opts = {}) ⇒ Selenium::WebDriver::Location
Calls @driver.set_location.
-
#set_wait(timeout = nil) ⇒ void
Set implicit wait.
-
#start_driver(http_client_ops = { http_client: nil, open_timeout: 999_999, read_timeout: 999_999 }) ⇒ Selenium::WebDriver
Creates a new global driver and quits the old one if it exists.
- #switch_to ⇒ TargetLocator
- #title ⇒ Object
-
#window_handle ⇒ Object
Get the current window handle.
- #window_handles ⇒ Object
-
#window_rect ⇒ Selenium::WebDriver::Rectangle
Get the device window’s rect.
-
#window_size ⇒ Selenium::WebDriver::Dimension
Get the device window’s size.
-
#x ⇒ void
Quit the driver and Pry.
Constructor Details
#initialize(opts = {}, global_driver = false) ⇒ Driver
Creates a new driver. The driver is defined as global scope by default. We can avoid defining global driver.
173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 |
# File 'lib/appium_lib/driver.rb', line 173 def initialize(opts = {}, global_driver = false) # Capybara can't put `global_driver` as the 2nd argument. global_driver = opts.delete :global_driver if global_driver.nil? $driver&.driver_quit if global_driver raise ArgumentError, 'opts must be a hash' unless opts.is_a? Hash @core = ::Appium::Core.for(opts) extend ::Appium::Core::Device opts = Appium.symbolize_keys opts appium_lib_opts = opts[:appium_lib] || {} @caps = @core.caps @custom_url = @core.custom_url @default_wait = @core.default_wait || 0 @appium_port = @core.port @appium_wait_timeout = @core.wait_timeout @appium_wait_interval = @core.wait_interval @listener = @core.listener @appium_device = @core.device @automation_name = @core.automation_name # Arrange the app capability. This must be after @core = ::Appium::Core.for(opts) set_app_path(opts) # enable debug patch @appium_debug = appium_lib_opts.fetch :debug, !!defined?(Pry) # rubocop:disable Style/DoubleNegation (appium_lib_opts) # Extend Common methods extend Appium::Common extend Appium::Device # Extend each driver's methods extend_for(device: @core.device, automation_name: @core.automation_name) # for command if @appium_debug Appium::Logger.debug opts unless opts.empty? Appium::Logger.debug "Debug is: #{@appium_debug}" Appium::Logger.debug "Device is: #{@core.device}" end # Save global reference to last created Appium driver for top level methods. $driver = self if global_driver self # rubocop:disable Lint/Void # return newly created driver end |
Instance Attribute Details
#appium_debug ⇒ Object (readonly)
Boolean debug mode for the Appium Ruby bindings
99 100 101 |
# File 'lib/appium_lib/driver.rb', line 99 def appium_debug @appium_debug end |
#appium_device ⇒ Object (readonly)
Returns the value of attribute appium_device.
89 90 91 |
# File 'lib/appium_lib/driver.rb', line 89 def appium_device @appium_device end |
#appium_port ⇒ Object (readonly)
Returns the value of attribute appium_port.
88 89 90 |
# File 'lib/appium_lib/driver.rb', line 88 def appium_port @appium_port end |
#appium_server_status ⇒ Object (readonly)
Appium’s server version
97 98 99 |
# File 'lib/appium_lib/driver.rb', line 97 def appium_server_status @appium_server_status end |
#appium_wait_interval ⇒ Object (readonly)
Returns the value of attribute appium_wait_interval.
94 95 96 |
# File 'lib/appium_lib/driver.rb', line 94 def appium_wait_interval @appium_wait_interval end |
#appium_wait_timeout ⇒ Object (readonly)
Returns the value of attribute appium_wait_timeout.
93 94 95 |
# File 'lib/appium_lib/driver.rb', line 93 def appium_wait_timeout @appium_wait_timeout end |
#automation_name ⇒ Object (readonly)
Returns the value of attribute automation_name.
90 91 92 |
# File 'lib/appium_lib/driver.rb', line 90 def automation_name @automation_name end |
#caps ⇒ Object (readonly)
85 86 87 |
# File 'lib/appium_lib/driver.rb', line 85 def caps @caps end |
#core ⇒ Object (readonly)
Instance of Appium::Core::Driver
104 105 106 |
# File 'lib/appium_lib/driver.rb', line 104 def core @core end |
#custom_url ⇒ Object (readonly)
Returns the value of attribute custom_url.
86 87 88 |
# File 'lib/appium_lib/driver.rb', line 86 def custom_url @custom_url end |
#default_wait ⇒ Object (readonly)
Returns the value of attribute default_wait.
87 88 89 |
# File 'lib/appium_lib/driver.rb', line 87 def default_wait @default_wait end |
#driver ⇒ Driver (readonly)
Returns the driver
102 103 104 |
# File 'lib/appium_lib/driver.rb', line 102 def driver @driver end |
#global_webdriver_http_sleep ⇒ Object
The amount to sleep in seconds before every webdriver http call.
69 70 71 |
# File 'lib/appium_lib/driver.rb', line 69 def global_webdriver_http_sleep @global_webdriver_http_sleep end |
#http_client ⇒ Object (readonly)
Returns the value of attribute http_client.
92 93 94 |
# File 'lib/appium_lib/driver.rb', line 92 def http_client @http_client end |
#listener ⇒ Object (readonly)
Returns the value of attribute listener.
91 92 93 |
# File 'lib/appium_lib/driver.rb', line 91 def listener @listener end |
#sauce ⇒ Object (readonly)
SauceLab’s settings
72 73 74 |
# File 'lib/appium_lib/driver.rb', line 72 def sauce @sauce end |
#sauce_access_key ⇒ Object (readonly)
Access Key for use on Sauce Labs. Set ‘false` to disable Sauce, even when SAUCE_ACCESS_KEY is in ENV. same as @sauce.access_key
78 79 80 |
# File 'lib/appium_lib/driver.rb', line 78 def sauce_access_key @sauce_access_key end |
#sauce_endpoint ⇒ Object (readonly)
Override the Sauce Appium endpoint to allow e.g. TestObject tests same as @sauce.endpoint
81 82 83 |
# File 'lib/appium_lib/driver.rb', line 81 def sauce_endpoint @sauce_endpoint end |
#sauce_username ⇒ Object (readonly)
Username for use on Sauce Labs. Set ‘false` to disable Sauce, even when SAUCE_USERNAME is in ENV. same as @sauce.username
75 76 77 |
# File 'lib/appium_lib/driver.rb', line 75 def sauce_username @sauce_username end |
Class Method Details
.absolute_app_path(opts) ⇒ String
- Deprecated
-
Converts app_path to an absolute path.
opts is the full options hash (caps and appium_lib). If server_url is set then the app path is used as is.
if app isn’t set then an error is raised.
402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 |
# File 'lib/appium_lib/driver.rb', line 402 def self.absolute_app_path(opts) raise ArgumentError, 'opts must be a hash' unless opts.is_a? Hash caps = opts[:caps] || opts['caps'] || {} app_path = get_cap(caps, 'app') raise ArgumentError, 'absolute_app_path invoked and app is not set!' if app_path.nil? || app_path.empty? # Sauce storage API. http://saucelabs.com/docs/rest#storage return app_path if app_path.start_with? 'sauce-storage:' return app_path if app_path =~ URI::DEFAULT_PARSER.make_regexp # public URL for Sauce ::Appium::Logger.warn('[Deprecation] Converting the path to absolute path will be removed. ' \ 'Please specify the full path which can be accessible from the appium server') absolute_app_path = File. app_path if File.exist? absolute_app_path absolute_app_path else ::Appium::Logger.info("Use #{app_path}") app_path end end |
.convert_to_symbol(value) ⇒ Object
45 46 47 48 49 50 51 |
# File 'lib/appium_lib/driver.rb', line 45 def convert_to_symbol(value) if value.nil? value else value.to_sym end end |
.get_cap(caps, name) ⇒ Object
54 55 56 57 58 59 60 |
# File 'lib/appium_lib/driver.rb', line 54 def get_cap(caps, name) name_with_prefix = "#{::Appium::Core::Base::Bridge::APPIUM_PREFIX}#{name}" caps[convert_to_symbol name] || caps[name] || caps[convert_to_symbol name_with_prefix] || caps[name_with_prefix] end |
Instance Method Details
#action ⇒ Selenium::WebDriver::PointerActions
An entry point to chain W3C actions Read www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Base/Bridge/W3C#action-instance_method
347 348 349 |
# File 'lib/appium_lib/driver.rb', line 347 def action @driver&.action end |
#appium_client_version ⇒ Hash
Returns the client’s version info
390 391 392 |
# File 'lib/appium_lib/driver.rb', line 390 def appium_client_version { version: ::Appium::VERSION } end |
#appium_server_version ⇒ Hash Also known as: remote_status
Returns the server’s version info
362 363 364 365 366 367 368 369 |
# File 'lib/appium_lib/driver.rb', line 362 def appium_server_version @core.appium_server_version rescue Selenium::WebDriver::Error::WebDriverError => ex raise ::Appium::Core::Error::ServerError unless ex..include?('content-type=""') # server (TestObject for instance) does not respond to status call {} end |
#automation_name_is_espresso? ⇒ Boolean
Return true if automationName is ‘Espresso’
327 328 329 |
# File 'lib/appium_lib/driver.rb', line 327 def automation_name_is_espresso? !@core.automation_name.nil? && @core.automation_name == :espresso end |
#automation_name_is_uiautomator2? ⇒ Boolean
Return true if automationName is ‘uiautomator2’
321 322 323 |
# File 'lib/appium_lib/driver.rb', line 321 def automation_name_is_uiautomator2? !@core.automation_name.nil? && @core.automation_name == :uiautomator2 end |
#automation_name_is_xcuitest? ⇒ Boolean
Return true if automationName is ‘XCUITest’
333 334 335 |
# File 'lib/appium_lib/driver.rb', line 333 def automation_name_is_xcuitest? !@core.automation_name.nil? && @core.automation_name == :xcuitest end |
#current_url ⇒ Object
721 722 723 724 725 |
# File 'lib/appium_lib/driver.rb', line 721 def current_url raise NoDriverInstanceError if @driver.nil? @driver.current_url end |
#device_is_android? ⇒ Boolean
307 308 309 |
# File 'lib/appium_lib/driver.rb', line 307 def device_is_android? @core.device == :android end |
#device_is_ios? ⇒ Boolean
311 312 313 |
# File 'lib/appium_lib/driver.rb', line 311 def device_is_ios? @core.device == :ios end |
#device_is_windows? ⇒ Boolean
315 316 317 |
# File 'lib/appium_lib/driver.rb', line 315 def device_is_windows? @core.device == :windows end |
#driver_attributes ⇒ Object
Returns a hash of the driver attributes
289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 |
# File 'lib/appium_lib/driver.rb', line 289 def driver_attributes { caps: @core.caps, automation_name: @core.automation_name, custom_url: @core.custom_url, default_wait: @default_wait, sauce_username: @sauce.username, sauce_access_key: @sauce.access_key, sauce_endpoint: @sauce.endpoint, port: @core.port, device: @core.device, debug: @appium_debug, listener: @listener, wait_timeout: @core.wait_timeout, wait_interval: @core.wait_interval } end |
#driver_quit ⇒ void Also known as: quit_driver
This method returns an undefined value.
Quits the driver
469 470 471 472 473 474 |
# File 'lib/appium_lib/driver.rb', line 469 def driver_quit @driver&.quit @driver = nil rescue Selenium::WebDriver::Error::WebDriverError nil end |
#element_screenshot(element, png_save_path) ⇒ File
Takes a png screenshot of particular element’s area
462 463 464 465 |
# File 'lib/appium_lib/driver.rb', line 462 def element_screenshot(element, png_save_path) @driver&.take_element_screenshot element, png_save_path nil end |
#execute_async_script(script, *args) ⇒ Object
Wrap calling selenium webdrier APIs via ruby_core
Get the window handles of open browser windows
650 651 652 653 654 |
# File 'lib/appium_lib/driver.rb', line 650 def execute_async_script(script, *args) raise NoDriverInstanceError if @driver.nil? @driver.execute_async_script script, *args end |
#execute_driver(script: '', type: 'webdriverio', timeout_ms: nil) ⇒ Appium::Core::Base::Device::ExecuteDriver::Result
Run a set of script against the current session, allowing execution of many commands in one Appium request. Supports WebdriverIO API so far. Please read command API for more details about acceptable scripts and the output.
684 685 686 687 688 |
# File 'lib/appium_lib/driver.rb', line 684 def execute_driver(script: '', type: 'webdriverio', timeout_ms: nil) raise NoDriverInstanceError if @driver.nil? @driver.execute_driver(script: script, type: type, timeout_ms: timeout_ms) end |
#execute_script(script, *args) ⇒ Object
The same as @driver.execute_script
640 641 642 643 644 |
# File 'lib/appium_lib/driver.rb', line 640 def execute_script(script, *args) raise NoDriverInstanceError if @driver.nil? @driver.execute_script script, *args end |
#exists(pre_check = 0, post_check = @default_wait) { ... } ⇒ Boolean
Returns existence of element.
Example:
exists { button(‘sign in’) } ? puts(‘true’) : puts(‘false’)
616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 |
# File 'lib/appium_lib/driver.rb', line 616 def exists(pre_check = 0, post_check = @default_wait) # do not uset set_wait here. # it will cause problems with other methods reading the default_wait of 0 # which then gets converted to a 1 second wait. @driver&.manage&.timeouts&.implicit_wait = pre_check # the element exists unless an error is raised. exists = true begin yield # search for element rescue StandardError exists = false # error means it's not there end # restore wait @driver&.manage&.timeouts&.implicit_wait = post_check if post_check != pre_check exists end |
#find_element(*args) ⇒ Element
Calls @driver.find_element
If you call ‘Appium.promote_appium_methods`, you can call `find_element` directly.
782 783 784 785 786 |
# File 'lib/appium_lib/driver.rb', line 782 def find_element(*args) raise NoDriverInstanceError if @driver.nil? @driver.find_element(*args) end |
#find_element_by_image(png_img_path) ⇒ ::Appium::Core::ImageElement
Return ImageElement if current view has a partial image
799 800 801 802 803 |
# File 'lib/appium_lib/driver.rb', line 799 def find_element_by_image(png_img_path) raise NoDriverInstanceError if @driver.nil? @driver.find_element_by_image(png_img_path) end |
#find_elements(*args) ⇒ Array<Element>
Calls @driver.find_elements_with_appium
If you call ‘Appium.promote_appium_methods`, you can call `find_elements` directly.
If you call ‘Appium.promote_appium_methods`, you can call `find_elements` directly.
764 765 766 767 768 |
# File 'lib/appium_lib/driver.rb', line 764 def find_elements(*args) raise NoDriverInstanceError if @driver.nil? @driver.find_elements(*args) end |
#find_elements_by_image(png_img_paths) ⇒ [::Appium::Core::ImageElement], ::Appium::Core::Error::CoreError
Return ImageElement if current view has partial images
816 817 818 819 820 |
# File 'lib/appium_lib/driver.rb', line 816 def find_elements_by_image(png_img_paths) raise NoDriverInstanceError if @driver.nil? @driver.find_elements_by_image(png_img_paths) end |
#get(url) ⇒ Object
715 716 717 718 719 |
# File 'lib/appium_lib/driver.rb', line 715 def get(url) raise NoDriverInstanceError if @driver.nil? @driver.get(url) end |
#log_event(vendor:, event:) ⇒ nil
Logs a custom event. The event is available via Core::Events#get.
856 857 858 859 860 |
# File 'lib/appium_lib/driver.rb', line 856 def log_event(vendor:, event:) raise NoDriverInstanceError if @driver.nil? @driver.logs.event vendor: vendor, event: event end |
#log_event=(log_event) ⇒ Object
862 863 864 865 866 867 868 869 |
# File 'lib/appium_lib/driver.rb', line 862 def log_event=(log_event) raise if @driver.nil? unless log_event.is_a?(Hash) raise ::Appium::Core::Error::ArgumentError('log_event should be Hash like { vendor: "appium", event: "funEvent"}') end @driver.logs.event vendor: log_event[:vendor], event: log_event[:event] end |
#log_events(type = nil) ⇒ Hash
Returns events with filtering with ‘type’. Defaults to all available events.
882 883 884 885 886 |
# File 'lib/appium_lib/driver.rb', line 882 def log_events(type = nil) raise NoDriverInstanceError if @driver.nil? @driver.logs.events(type) end |
#manage ⇒ Object
709 710 711 712 713 |
# File 'lib/appium_lib/driver.rb', line 709 def manage raise NoDriverInstanceError if @driver.nil? @driver.manage end |
#navigate ⇒ Object
703 704 705 706 707 |
# File 'lib/appium_lib/driver.rb', line 703 def navigate raise NoDriverInstanceError if @driver.nil? @driver.navigate end |
#no_wait ⇒ Object
Set implicit wait to zero.
585 586 587 |
# File 'lib/appium_lib/driver.rb', line 585 def no_wait @driver&.manage&.timeouts&.implicit_wait = 0 end |
#platform_version ⇒ Array<Integer>
Return the platform version as an array of integers
374 375 376 377 378 379 |
# File 'lib/appium_lib/driver.rb', line 374 def platform_version return [] if @driver.nil? p_version = @driver.capabilities['platformVersion'] p_version.split('.').map(&:to_i) end |
#restart ⇒ Driver
Restarts the driver
435 436 437 438 |
# File 'lib/appium_lib/driver.rb', line 435 def restart driver_quit start_driver end |
#screenshot(png_save_path) ⇒ File
Takes a png screenshot and saves to the target path.
448 449 450 |
# File 'lib/appium_lib/driver.rb', line 448 def screenshot(png_save_path) @driver&.save_screenshot png_save_path end |
#server_url ⇒ String
Get the server url
426 427 428 429 430 431 |
# File 'lib/appium_lib/driver.rb', line 426 def server_url return @core.custom_url if @core.custom_url return @sauce.server_url if @sauce.sauce_server_url? "http://127.0.0.1:#{@core.port}/wd/hub" end |
#set_implicit_wait(wait) ⇒ Object
To ignore error for Espresso Driver
574 575 576 577 578 579 580 581 582 |
# File 'lib/appium_lib/driver.rb', line 574 def set_implicit_wait(wait) @driver.manage.timeouts.implicit_wait = wait rescue Selenium::WebDriver::Error::UnknownError => e unless e..include?('The operation requested is not yet implemented by Espresso driver') raise ::Appium::Core::Error::ServerError end {} end |
#set_location(opts = {}) ⇒ Selenium::WebDriver::Location
This method does not work on real devices.
Calls @driver.set_location
831 832 833 834 835 836 837 838 |
# File 'lib/appium_lib/driver.rb', line 831 def set_location(opts = {}) raise NoDriverInstanceError if @driver.nil? latitude = opts.fetch(:latitude) longitude = opts.fetch(:longitude) altitude = opts.fetch(:altitude, 75) @driver.set_location(latitude, longitude, altitude) end |
#set_wait(timeout = nil) ⇒ void
This method returns an undefined value.
Set implicit wait. Default to @default_wait.
599 600 601 602 |
# File 'lib/appium_lib/driver.rb', line 599 def set_wait(timeout = nil) timeout = @default_wait if timeout.nil? @driver&.manage&.timeouts&.implicit_wait = timeout end |
#start_driver(http_client_ops = { http_client: nil, open_timeout: 999_999, read_timeout: 999_999 }) ⇒ Selenium::WebDriver
Creates a new global driver and quits the old one if it exists. You can customise http_client as the following
Read www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device to understand more what the driver can call instance methods.
539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 |
# File 'lib/appium_lib/driver.rb', line 539 def start_driver(http_client_ops = { http_client: nil, open_timeout: 999_999, read_timeout: 999_999 }) if http_client_ops[:http_client].nil? http_client = ::Appium::Http::Default.new(open_timeout: http_client_ops[:open_timeout], read_timeout: http_client_ops[:read_timeout]) end # TODO: do not kill the previous session in the future version. if $driver.nil? driver_quit else $driver.driver_quit end # If automationName is set only in server side, then the following automation_name should be nil before # starting driver. automation_name = @core.automation_name @driver = @core.start_driver(server_url: server_url, http_client_ops: { http_client: http_client, open_timeout: 999_999, read_timeout: 999_999 }) @http_client = @core.http_client # if automation_name was nil before start_driver, then re-extend driver specific methods # to be able to extend correctly. extend_for(device: @core.device, automation_name: @core.automation_name) if automation_name.nil? @appium_server_status = appium_server_version @driver end |
#switch_to ⇒ TargetLocator
735 736 737 738 739 |
# File 'lib/appium_lib/driver.rb', line 735 def switch_to raise NoDriverInstanceError if @driver.nil? @driver.switch_to end |
#title ⇒ Object
727 728 729 730 731 |
# File 'lib/appium_lib/driver.rb', line 727 def title raise NoDriverInstanceError if @driver.nil? @driver.title end |
#window_handle ⇒ Object
Get the current window handle
697 698 699 700 701 |
# File 'lib/appium_lib/driver.rb', line 697 def window_handle raise NoDriverInstanceError if @driver.nil? @driver.window_handle end |
#window_handles ⇒ Object
690 691 692 693 694 |
# File 'lib/appium_lib/driver.rb', line 690 def window_handles raise NoDriverInstanceError if @driver.nil? @driver.window_handles end |
#window_rect ⇒ Selenium::WebDriver::Rectangle
Get the device window’s rect.
504 505 506 507 508 |
# File 'lib/appium_lib/driver.rb', line 504 def window_rect raise NoDriverInstanceError if @driver.nil? @driver.window_rect end |
#window_size ⇒ Selenium::WebDriver::Dimension
Get the device window’s size.
486 487 488 489 490 491 |
# File 'lib/appium_lib/driver.rb', line 486 def window_size # maybe exception is expected as no driver created raise NoDriverInstanceError if @driver.nil? @driver.window_size end |
#x ⇒ void
This method returns an undefined value.
Quit the driver and Pry. quit and exit are reserved by Pry.
891 892 893 894 |
# File 'lib/appium_lib/driver.rb', line 891 def x driver_quit exit # exit pry end |