class Selenium::WebDriver::Chrome::Service
@api private
Constants
- DEFAULT_PORT
- MISSING_TEXT
- START_TIMEOUT
- STOP_TIMEOUT
Attributes
uri[R]
Public Class Methods
default_service(*extra_args)
click to toggle source
# File lib/selenium/webdriver/chrome/service.rb, line 32 def self.default_service(*extra_args) new executable_path, PortProber.above(DEFAULT_PORT), *extra_args end
executable_path()
click to toggle source
# File lib/selenium/webdriver/chrome/service.rb, line 17 def self.executable_path @executable_path ||= ( path = Platform.find_binary "chromedriver" path or raise Error::WebDriverError, MISSING_TEXT Platform.assert_executable path path ) end
executable_path=(path)
click to toggle source
# File lib/selenium/webdriver/chrome/service.rb, line 27 def self.executable_path=(path) Platform.assert_executable path @executable_path = path end
new(executable_path, port, *extra_args)
click to toggle source
# File lib/selenium/webdriver/chrome/service.rb, line 36 def initialize(executable_path, port, *extra_args) @uri = URI.parse "http://#{Platform.localhost}:#{port}" server_command = [executable_path, "--port=#{port}", *extra_args] @process = ChildProcess.build(*server_command) @socket_poller = SocketPoller.new Platform.localhost, port, START_TIMEOUT @process.io.inherit! if $DEBUG == true end
Public Instance Methods
start()
click to toggle source
# File lib/selenium/webdriver/chrome/service.rb, line 46 def start @process.start unless @socket_poller.connected? raise Error::WebDriverError, "unable to connect to chromedriver #{@uri}" end Platform.exit_hook { stop } # make sure we don't leave the server running end
stop()
click to toggle source
# File lib/selenium/webdriver/chrome/service.rb, line 56 def stop return if @process.nil? || @process.exited? Net::HTTP.start(uri.host, uri.port) do |http| http.open_timeout = STOP_TIMEOUT / 2 http.read_timeout = STOP_TIMEOUT / 2 http.head("/shutdown") end @process.poll_for_exit STOP_TIMEOUT rescue ChildProcess::TimeoutError # ok, force quit @process.stop STOP_TIMEOUT end