Class: Selenium::WebDriver::Chrome::Service Private
- Inherits:
-
Object
- Object
- Selenium::WebDriver::Chrome::Service
- Defined in:
- lib/selenium/webdriver/chrome/service.rb
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.
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.
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.
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.
"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
- #uri ⇒ Object readonly private
Class Method Summary collapse
- .default_service ⇒ Object private
- .executable_path ⇒ Object private
- .executable_path=(path) ⇒ Object private
Instance Method Summary collapse
-
#initialize(executable_path, port) ⇒ Service
constructor
private
A new instance of Service.
- #start ⇒ Object private
- #stop ⇒ Object private
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.
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
#uri ⇒ Object (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.
14 15 16 |
# File 'lib/selenium/webdriver/chrome/service.rb', line 14 def uri @uri end |
Class Method Details
.default_service ⇒ 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.
27 28 29 |
# File 'lib/selenium/webdriver/chrome/service.rb', line 27 def self.default_service new executable_path, PortProber.random end |
.executable_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.
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.
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
#start ⇒ 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.
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 |
#stop ⇒ 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.
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 |