Skip to content

Commit cdc39f1

Browse files
authored
Merge pull request #308 from seleniumbase/update-capabilities-parser
Allow passing a boolean value to desired capabilities
2 parents 6570194 + 568712d commit cdc39f1

File tree

3 files changed

+85
-1
lines changed

3 files changed

+85
-1
lines changed

examples/capabilities/ReadMe.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,11 @@ You can generate desired capabilities for [BrowserStack](https://www.browserstac
4141

4242
A regex parser was built into SeleniumBase to capture all lines from the specified desired capabilities file in the following formats:
4343
``'KEY': 'VALUE'``
44+
``'KEY': True``
45+
``'KEY': False``
4446
``caps['KEY'] = "VALUE"``
47+
``caps['KEY'] = True``
48+
``caps['KEY'] = False``
4549
(Each pair must be on a separate line. You can interchange single and double quotes.)
4650

4751
You can also swap ``--browser=remote`` with an actual browser, eg ``--browser=chrome``, which will combine the default SeleniumBase desired capabilities with those that were specified in the capabilities file when using ``--cap_file=FILE.py``. Capabilities will override other parameters, so if you set the browser to one thing and the capabilities browser to another, SeleniumBase will use the capabilities browser as the browser. You'll need default SeleniumBase desired capabilities when using a proxy server (not the same as a Selenium Grid server), when downloading files to a desired folder, for disabling some warnings on Chrome, for overriding a website's Content Security Policy on Firefox, and for other reasons.

seleniumbase/core/capabilities_parser.py

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,46 @@ def get_desired_capabilities(cap_file):
5555
num_capabilities += 1
5656
continue
5757

58+
# "KEY" : True
59+
data = re.match(
60+
r'''^\s*"([\S\s]+)"\s*:\s*True\s*[,}]?\s*$''', line)
61+
if data:
62+
key = data.group(1)
63+
value = True
64+
desired_capabilities[key] = value
65+
num_capabilities += 1
66+
continue
67+
68+
# 'KEY' : True
69+
data = re.match(
70+
r'''^\s*'([\S\s]+)'\s*:\s*True\s*[,}]?\s*$''', line)
71+
if data:
72+
key = data.group(1)
73+
value = True
74+
desired_capabilities[key] = value
75+
num_capabilities += 1
76+
continue
77+
78+
# "KEY" : False
79+
data = re.match(
80+
r'''^\s*"([\S\s]+)"\s*:\s*False\s*[,}]?\s*$''', line)
81+
if data:
82+
key = data.group(1)
83+
value = False
84+
desired_capabilities[key] = value
85+
num_capabilities += 1
86+
continue
87+
88+
# 'KEY' : False
89+
data = re.match(
90+
r'''^\s*'([\S\s]+)'\s*:\s*False\s*[,}]?\s*$''', line)
91+
if data:
92+
key = data.group(1)
93+
value = False
94+
desired_capabilities[key] = value
95+
num_capabilities += 1
96+
continue
97+
5898
# caps['KEY'] = 'VALUE'
5999
data = re.match(r"^\s*caps\['([\S\s]+)'\]\s*=\s*'([\S\s]+)'\s*$", line)
60100
if data:
@@ -93,6 +133,46 @@ def get_desired_capabilities(cap_file):
93133
num_capabilities += 1
94134
continue
95135

136+
# caps["KEY"] = True
137+
data = re.match(
138+
r'''^\s*caps\["([\S\s]+)"\]\s*=\s*True\s*$''', line)
139+
if data:
140+
key = data.group(1)
141+
value = True
142+
desired_capabilities[key] = value
143+
num_capabilities += 1
144+
continue
145+
146+
# caps['KEY'] = True
147+
data = re.match(
148+
r'''^\s*caps\['([\S\s]+)'\]\s*=\s*True\s*$''', line)
149+
if data:
150+
key = data.group(1)
151+
value = True
152+
desired_capabilities[key] = value
153+
num_capabilities += 1
154+
continue
155+
156+
# caps["KEY"] = False
157+
data = re.match(
158+
r'''^\s*caps\["([\S\s]+)"\]\s*=\s*False\s*$''', line)
159+
if data:
160+
key = data.group(1)
161+
value = False
162+
desired_capabilities[key] = value
163+
num_capabilities += 1
164+
continue
165+
166+
# caps['KEY'] = False
167+
data = re.match(
168+
r'''^\s*caps\['([\S\s]+)'\]\s*=\s*False\s*$''', line)
169+
if data:
170+
key = data.group(1)
171+
value = False
172+
desired_capabilities[key] = value
173+
num_capabilities += 1
174+
continue
175+
96176
if num_capabilities == 0:
97177
raise Exception("Unable to parse desired capabilities file!")
98178

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
setup(
1919
name='seleniumbase',
20-
version='1.22.4',
20+
version='1.22.5',
2121
description='Reliable Browser Automation & Testing Framework',
2222
long_description=long_description,
2323
long_description_content_type='text/markdown',

0 commit comments

Comments
 (0)