@@ -81,10 +81,21 @@ def _string_to_dict(self, capabilities):
8181 desired_capabilities [key .strip ()] = value .strip ()
8282 return desired_capabilities
8383
84+ def _remote_capabilities_resolver (self , set_capabilities , default_capabilities ):
85+ if not set_capabilities :
86+ return {'desired_capabilities' : default_capabilities }
87+ if 'capabilities' in set_capabilities :
88+ caps = set_capabilities ['capabilities' ]
89+ else :
90+ caps = set_capabilities ['desired_capabilities' ]
91+ if 'browserName' not in caps :
92+ caps ['browserName' ] = default_capabilities ['browserName' ]
93+ return {'desired_capabilities' : caps }
94+
8495 def create_chrome (self , desired_capabilities , remote_url , options = None ):
8596 if is_truthy (remote_url ):
86- if not desired_capabilities :
87- desired_capabilities = { 'desired_capabilities' : webdriver . DesiredCapabilities . CHROME . copy ()}
97+ defaul_caps = webdriver . DesiredCapabilities . CHROME . copy ()
98+ desired_capabilities = self . _remote_capabilities_resolver ( desired_capabilities , defaul_caps )
8899 return self ._remote (desired_capabilities , remote_url , options = options )
89100 return webdriver .Chrome (options = options , ** desired_capabilities )
90101
@@ -98,8 +109,8 @@ def create_firefox(self, desired_capabilities, remote_url, ff_profile_dir,
98109 options = None ):
99110 profile = self ._get_ff_profile (ff_profile_dir )
100111 if is_truthy (remote_url ):
101- if not desired_capabilities :
102- desired_capabilities = { 'desired_capabilities' : webdriver . DesiredCapabilities . FIREFOX . copy ()}
112+ defaul_caps = webdriver . DesiredCapabilities . FIREFOX . copy ()
113+ desired_capabilities = self . _remote_capabilities_resolver ( desired_capabilities , defaul_caps )
103114 return self ._remote (desired_capabilities , remote_url ,
104115 profile , options )
105116 desired_capabilities .update (self ._geckodriver_log )
@@ -125,72 +136,64 @@ def create_headless_firefox(self, desired_capabilities, remote_url,
125136
126137 def create_ie (self , desired_capabilities , remote_url ):
127138 if is_truthy (remote_url ):
128- if not desired_capabilities :
129- ie = webdriver .DesiredCapabilities .INTERNETEXPLORER .copy ()
130- desired_capabilities = {'desired_capabilities' : ie }
139+ defaul_caps = webdriver .DesiredCapabilities .INTERNETEXPLORER .copy ()
140+ desired_capabilities = self ._remote_capabilities_resolver (desired_capabilities , defaul_caps )
131141 return self ._remote (desired_capabilities , remote_url )
132142 return webdriver .Ie (** desired_capabilities )
133143
134144 def create_edge (self , desired_capabilities , remote_url ):
135145 if is_truthy (remote_url ):
136- if not desired_capabilities :
137- edge = webdriver .DesiredCapabilities .EDGE .copy ()
138- desired_capabilities = {'desired_capabilities' : edge }
146+ defaul_caps = webdriver .DesiredCapabilities .EDGE .copy ()
147+ desired_capabilities = self ._remote_capabilities_resolver (desired_capabilities , defaul_caps )
139148 return self ._remote (desired_capabilities , remote_url )
140149 return webdriver .Edge (** desired_capabilities )
141150
142151 def create_opera (self , desired_capabilities , remote_url ):
143152 if is_truthy (remote_url ):
144- if not desired_capabilities :
145- opera = webdriver .DesiredCapabilities .OPERA .copy ()
146- desired_capabilities = {'desired_capabilities' : opera }
153+ defaul_caps = webdriver .DesiredCapabilities .OPERA .copy ()
154+ desired_capabilities = self ._remote_capabilities_resolver (desired_capabilities , defaul_caps )
147155 return self ._remote (desired_capabilities , remote_url )
148156 return webdriver .Opera (** desired_capabilities )
149157
150158 def create_safari (self , desired_capabilities , remote_url ):
151159 if is_truthy (remote_url ):
152- if not desired_capabilities :
153- caps = webdriver .DesiredCapabilities .SAFARI .copy ()
154- desired_capabilities = {'desired_capabilities' : caps }
160+ defaul_caps = webdriver .DesiredCapabilities .SAFARI .copy ()
161+ desired_capabilities = self ._remote_capabilities_resolver (desired_capabilities , defaul_caps )
155162 return self ._remote (desired_capabilities , remote_url )
156163 return webdriver .Safari (** desired_capabilities )
157164
158165 def create_phantomjs (self , desired_capabilities , remote_url ):
159166 warnings .warn ('SeleniumLibrary support for PhantomJS has been deprecated, '
160167 'please use headlesschrome or headlessfirefox instead.' )
161168 if is_truthy (remote_url ):
162- if not desired_capabilities :
163- caps = webdriver .DesiredCapabilities .PHANTOMJS .copy ()
164- desired_capabilities = {'desired_capabilities' : caps }
169+ defaul_caps = webdriver .DesiredCapabilities .PHANTOMJS .copy ()
170+ desired_capabilities = self ._remote_capabilities_resolver (desired_capabilities , defaul_caps )
165171 return self ._remote (desired_capabilities , remote_url )
166172 return webdriver .PhantomJS (** desired_capabilities )
167173
168174 def create_htmlunit (self , desired_capabilities , remote_url ):
169- if not desired_capabilities :
170- desired_capabilities [ 'desired_capabilities' ] = webdriver . DesiredCapabilities . HTMLUNIT
175+ defaul_caps = webdriver . DesiredCapabilities . HTMLUNIT . copy ()
176+ desired_capabilities = self . _remote_capabilities_resolver ( desired_capabilities , defaul_caps )
171177 return self ._remote (desired_capabilities , remote_url )
172178
173179 def create_htmlunit_with_js (self , desired_capabilities , remote_url ):
174- if not desired_capabilities :
175- desired_capabilities [ 'desired_capabilities' ] = webdriver . DesiredCapabilities . HTMLUNITWITHJS
180+ defaul_caps = webdriver . DesiredCapabilities . HTMLUNITWITHJS . copy ()
181+ desired_capabilities = self . _remote_capabilities_resolver ( desired_capabilities , defaul_caps )
176182 return self ._remote (desired_capabilities , remote_url )
177183
178184 def create_android (self , desired_capabilities , remote_url ):
179- if not desired_capabilities :
180- desired_capabilities [ 'desired_capabilities' ] = webdriver . DesiredCapabilities . ANDROID
185+ defaul_caps = webdriver . DesiredCapabilities . ANDROID . copy ()
186+ desired_capabilities = self . _remote_capabilities_resolver ( desired_capabilities , defaul_caps )
181187 return self ._remote (desired_capabilities , remote_url )
182188
183189 def create_iphone (self , desired_capabilities , remote_url ):
184- if not desired_capabilities :
185- desired_capabilities [ 'desired_capabilities' ] = webdriver . DesiredCapabilities . IPHONE
190+ defaul_caps = webdriver . DesiredCapabilities . IPHONE . copy ()
191+ desired_capabilities = self . _remote_capabilities_resolver ( desired_capabilities , defaul_caps )
186192 return self ._remote (desired_capabilities , remote_url )
187193
188194 def _remote (self , desired_capabilities , remote_url ,
189195 profile_dir = None , options = None ):
190196 remote_url = str (remote_url )
191- if 'capabilities' in desired_capabilities :
192- desired_capabilities ['desired_capabilities' ] = desired_capabilities .pop ('capabilities' )
193-
194197 return webdriver .Remote (command_executor = remote_url ,
195198 browser_profile = profile_dir , options = options ,
196199 ** desired_capabilities )
0 commit comments