Skip to content

Commit 9b06578

Browse files
authored
Fixed Open Browser not require browserName when remote_url is defined (#1366)
Fixes #1284
1 parent 5206003 commit 9b06578

File tree

2 files changed

+176
-33
lines changed

2 files changed

+176
-33
lines changed

src/SeleniumLibrary/keywords/webdrivertools.py

Lines changed: 33 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)