Skip to content

Commit 92c1210

Browse files
authored
Fixes regression caused by 159206f (#1278)
* Fixes regression caused by 159206f If Open Browser keyword desired_capabilities is a dict, then Open Browser keyword
1 parent 588fc26 commit 92c1210

File tree

3 files changed

+33
-11
lines changed

3 files changed

+33
-11
lines changed

atest/acceptance/open_and_close.robot

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,3 +76,8 @@ Get Session Id
7676
Run Keyword And Expect Error
7777
... No browser with index or alias 'Browser 2' found.
7878
... Switch Browser Browser 2
79+
80+
Open Browser desired_capabilities As Dictionary
81+
${caps} Create Dictionary foo=${True}
82+
Open Browser ${ROOT}/forms/prefilled_email_form.html ${BROWSER}
83+
... remote_url=${REMOTE_URL} desired_capabilities=${caps}

src/SeleniumLibrary/keywords/webdrivertools.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -65,22 +65,25 @@ def _get_creator_method(self, browser):
6565
raise ValueError('{} is not a supported browser.'.format(browser))
6666

6767
def _parse_capabilities(self, capabilities, browser=None):
68-
if isinstance(capabilities, dict):
69-
return capabilities
70-
desired_capabilities = {}
7168
if is_falsy(capabilities):
72-
return desired_capabilities
73-
for part in capabilities.split(','):
74-
key, value = part.split(':')
75-
desired_capabilities[key.strip()] = value.strip()
69+
return {}
70+
if not isinstance(capabilities, dict):
71+
capabilities = self._string_to_dict(capabilities)
7672
browser_alias = {'googlechrome': "chrome", 'gc': "chrome",
7773
'headlesschrome': 'chrome', 'ff': 'firefox',
7874
'headlessfirefox': 'firefox',
7975
'internetexplorer': 'ie'}
8076
browser = browser_alias.get(browser, browser)
8177
if browser in ['ie', 'firefox', 'edge']:
82-
return {'capabilities': desired_capabilities}
83-
return {'desired_capabilities': desired_capabilities}
78+
return {'capabilities': capabilities}
79+
return {'desired_capabilities': capabilities}
80+
81+
def _string_to_dict(self, capabilities):
82+
desired_capabilities = {}
83+
for part in capabilities.split(','):
84+
key, value = part.split(':')
85+
desired_capabilities[key.strip()] = value.strip()
86+
return desired_capabilities
8487

8588
def create_chrome(self, desired_capabilities, remote_url, options=None):
8689
if is_truthy(remote_url):

utest/test/keywords/test_webdrivercreator.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,9 @@ def test_parse_capabilities(self):
4848
caps = self.creator._parse_capabilities('key1:value1,key2:value2', 'edge')
4949
self.assertDictEqual(caps, expected)
5050

51-
caps = self.creator._parse_capabilities(expected)
52-
self.assertDictEqual(caps, expected)
51+
parsing_caps = expected.copy()
52+
caps = self.creator._parse_capabilities(parsing_caps)
53+
self.assertDictEqual(caps, {'desired_capabilities': expected})
5354

5455
caps = self.creator._parse_capabilities('key1 : value1 , key2: value2')
5556
expected = {'desired_capabilities': {'key1': 'value1', 'key2': 'value2'}}
@@ -65,6 +66,19 @@ def test_parse_capabilities(self):
6566
caps = self.creator._parse_capabilities({})
6667
self.assertDictEqual(caps, {})
6768

69+
caps = self.creator._parse_capabilities(None)
70+
self.assertDictEqual(caps, {})
71+
72+
for browser in [None, 'safari', 'headlesschrome', 'foobar']:
73+
caps = self.creator._parse_capabilities({'key1': 'value1', 'key2': 'value2'}, browser)
74+
expected = {'desired_capabilities': {'key1': 'value1', 'key2': 'value2'}}
75+
self.assertDictEqual(caps, expected)
76+
77+
for browser in ['ie', 'firefox', 'edge']:
78+
caps = self.creator._parse_capabilities({'key1': 'value1', 'key2': 'value2'}, browser)
79+
expected = {'capabilities': {'key1': 'value1', 'key2': 'value2'}}
80+
self.assertDictEqual(caps, expected)
81+
6882
def test_chrome(self):
6983
expected_webdriver = mock()
7084
when(webdriver).Chrome(options=None).thenReturn(expected_webdriver)

0 commit comments

Comments
 (0)