Class: Selenium::WebDriver::Chrome::Service Private

Inherits:
Object
  • Object
show all
Defined in:
lib/selenium/webdriver/chrome/service.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

API:

  • private

Constant Summary collapse

START_TIMEOUT =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

API:

  • private

20
STOP_TIMEOUT =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

API:

  • private

5
MISSING_TEXT =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

API:

  • private

"Unable to find the chromedriver executable. Please download the server from http://code.google.com/p/selenium/downloads/list and place it somewhere on your PATH. More info at http://code.google.com/p/selenium/wiki/ChromeDriver."

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(executable_path, port) ⇒ Service

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of Service.

API:

  • private



31
32
33
34
35
36
37
38
39
# File 'lib/selenium/webdriver/chrome/service.rb', line 31

def initialize(executable_path, port)
  @uri           = URI.parse "http://#{Platform.localhost}:#{port}"
  server_command = [executable_path, "--port=#{port}"]

  @process       = ChildProcess.build(*server_command)
  @socket_poller = SocketPoller.new Platform.localhost, port, START_TIMEOUT

  @process.io.inherit! if $DEBUG == true
end

Instance Attribute Details

#uriObject (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



14
15
16
# File 'lib/selenium/webdriver/chrome/service.rb', line 14

def uri
  @uri
end

Class Method Details

.default_serviceObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



27
28
29
# File 'lib/selenium/webdriver/chrome/service.rb', line 27

def self.default_service
  new executable_path, PortProber.random
end

.executable_pathObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



16
17
18
19
20
# File 'lib/selenium/webdriver/chrome/service.rb', line 16

def self.executable_path
  @executable_path ||= (
    Platform.find_binary "chromedriver" or raise Error::WebDriverError, MISSING_TEXT
  )
end

.executable_path=(path) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



22
23
24
25
# File 'lib/selenium/webdriver/chrome/service.rb', line 22

def self.executable_path=(path)
  Platform.assert_executable path
  @executable_path = path
end

Instance Method Details

#startObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



41
42
43
44
45
46
47
48
49
# File 'lib/selenium/webdriver/chrome/service.rb', line 41

def start
  @process.start

  unless @socket_poller.connected?
    raise Error::WebDriverError, "unable to connect to chromedriver #{@uri}"
  end

  at_exit { stop } # make sure we don't leave the server running
end

#stopObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



51
52
53
54
55
56
57
58
59
# File 'lib/selenium/webdriver/chrome/service.rb', line 51

def stop
  return if @process.nil? || @process.exited?

  Net::HTTP.get uri.host, '/shutdown', uri.port
  @process.poll_for_exit STOP_TIMEOUT
rescue ChildProcess::TimeoutError
  # ok, force quit
  @process.stop STOP_TIMEOUT
end