Method: Appium::Core::Driver#start_driver
- Defined in:
- lib/appium_lib_core/driver.rb
#start_driver(server_url: nil, 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
395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 |
# File 'lib/appium_lib_core/driver.rb', line 395 def start_driver(server_url: nil, http_client_ops: { http_client: nil, open_timeout: 999_999, read_timeout: 999_999 }) @custom_url ||= "http://127.0.0.1:#{@port}/wd/hub" @custom_url = server_url unless server_url.nil? @http_client = get_http_client http_client: http_client_ops.delete(:http_client), open_timeout: http_client_ops.delete(:open_timeout), read_timeout: http_client_ops.delete(:read_timeout) if @enable_idempotency_header if @http_client.instance_variable_defined? :@additional_headers @http_client.set_additional_header Appium::Core::Base::Http::RequestHeaders::KEYS[:idempotency], SecureRandom.uuid else ::Appium::Logger.warn 'No additional_headers attribute in this http client instance' end end begin @driver = ::Appium::Core::Base::Driver.new(listener: @listener, http_client: @http_client, capabilities: @caps, # ::Appium::Core::Base::Capabilities url: @custom_url, wait_timeout: @wait_timeout, wait_interval: @wait_interval) if @direct_connect d_c = DirectConnections.new(@driver.capabilities) @driver.update_sending_request_to(protocol: d_c.protocol, host: d_c.host, port: d_c.port, path: d_c.path) end rescue Errno::ECONNREFUSED raise "ERROR: Unable to connect to Appium. Is the server running on #{@custom_url}?" end if @http_client.instance_variable_defined? :@additional_headers # We only need the key for a new session request. Should remove it for other following commands. @http_client.delete_additional_header Appium::Core::Base::Http::RequestHeaders::KEYS[:idempotency] end # TODO: this method can be removed after releasing Appium 2.0, and after a while # since Appium 2.0 reuqires 'automationName'. This method won't help anymore then. # If "automationName" is set only server side, this method set "automationName" attribute into @automation_name. # Since @automation_name is set only client side before start_driver is called. set_automation_name_if_nil set_implicit_wait_by_default(@default_wait) @driver end |