@@ -26,15 +26,25 @@ def initialize(opts = {})
26
26
opts [ :desired_capabilities ] = create_capabilities ( opts )
27
27
28
28
unless opts . key? ( :url )
29
+ driver_path = opts . delete ( :driver_path ) || Chrome . driver_path
29
30
port = opts . delete ( :port ) || Service ::DEFAULT_PORT
30
- service_args = opts . delete ( :service_args ) || { }
31
31
32
- if opts [ :service_log_path ]
33
- service_args . merge! ( service_log_path : opts . delete ( :service_log_path ) )
32
+ opts [ :driver_opts ] ||= { }
33
+ if opts . key? :service_log_path
34
+ WebDriver . logger . warn <<-DEPRECATE . gsub ( /\n +| {2,}/ , ' ' ) . freeze
35
+ [DEPRECATION] `:service_log_path` is deprecated. Use `driver_opts: {log_path: #{ opts [ :service_log_path ] } }`
36
+ DEPRECATE
37
+ opts [ :driver_opts ] [ :log_path ] = opts . delete :service_log_path
34
38
end
35
39
36
- driver_path = opts . delete ( :driver_path ) || Chrome . driver_path
37
- @service = Service . new ( driver_path , port , *extract_service_args ( service_args ) )
40
+ if opts . key? :service_args
41
+ WebDriver . logger . warn <<-DEPRECATE . gsub ( /\n +| {2,}/ , ' ' ) . freeze
42
+ [DEPRECATION] `:service_args` is deprecated. Pass switches using `driver_opts`
43
+ DEPRECATE
44
+ opts [ :driver_opts ] [ :args ] = opts . delete ( :service_args )
45
+ end
46
+
47
+ @service = Service . new ( driver_path , port , opts . delete ( :driver_opts ) )
38
48
@service . start
39
49
opts [ :url ] = @service . uri
40
50
end
@@ -47,10 +57,8 @@ def browser
47
57
end
48
58
49
59
def driver_extensions
50
- [
51
- DriverExtensions ::TakesScreenshot ,
52
- DriverExtensions ::HasWebStorage
53
- ]
60
+ [ DriverExtensions ::TakesScreenshot ,
61
+ DriverExtensions ::HasWebStorage ]
54
62
end
55
63
56
64
def capabilities
@@ -76,34 +84,24 @@ def create_capabilities(opts)
76
84
raise ArgumentError , ':args must be an Array of Strings'
77
85
end
78
86
79
- chrome_options [ ' args' ] = args . map ( &:to_s )
87
+ args . map! ( &:to_s )
80
88
profile = opts . delete ( :profile ) . as_json if opts . key? ( :profile )
81
89
82
- if profile && chrome_options [ ' args' ] . none? { |arg | arg =~ /user-data-dir/ }
83
- chrome_options [ ' args' ] << "--user-data-dir=#{ profile [ :directory ] } "
90
+ if profile && args . none? { |arg | arg =~ /user-data-dir/ }
91
+ args << "--user-data-dir=#{ profile [ :directory ] } "
84
92
end
93
+ chrome_options [ 'args' ] = args unless args . empty?
85
94
86
95
chrome_options [ 'extensions' ] = profile [ :extensions ] if profile && profile [ :extensions ]
87
96
chrome_options [ 'detach' ] = true if opts . delete ( :detach )
88
97
chrome_options [ 'prefs' ] = opts . delete ( :prefs ) if opts . key? ( :prefs )
89
98
90
- caps [ :chrome_options ] = chrome_options
99
+ caps [ :chrome_options ] = chrome_options unless chrome_options . empty?
91
100
caps [ :proxy ] = opts . delete ( :proxy ) if opts . key? ( :proxy )
92
101
caps [ :proxy ] ||= opts . delete ( 'proxy' ) if opts . key? ( 'proxy' )
93
102
94
103
caps
95
104
end
96
-
97
- def extract_service_args ( args )
98
- service_args = [ ]
99
- service_args << "--log-path=#{ args . delete ( :service_log_path ) } " if args . key? ( :service_log_path )
100
- service_args << "--url-base=#{ args . delete ( :url_base ) } " if args . key? ( :url_base )
101
- service_args << "--port-server=#{ args . delete ( :port_server ) } " if args . key? ( :port_server )
102
- service_args << "--whitelisted-ips=#{ args . delete ( :whitelisted_ips ) } " if args . key? ( :whitelisted_ips )
103
- service_args << "--verbose=#{ args . delete ( :verbose ) } " if args . key? ( :verbose )
104
- service_args << "--silent=#{ args . delete ( :silent ) } " if args . key? ( :silent )
105
- service_args
106
- end
107
105
end # Bridge
108
106
end # Chrome
109
107
end # WebDriver
0 commit comments