Skip to content

Commit 4d8502d

Browse files
authored
Enhance support browser options (#105)
* Fix open browser support option as None * Add demo other options * Clean up code * Update ubuntu lib version * Update libvpx to v6 * Add missing lib * support browser options * support all options * Add documents * Fix path issue * Fix puppeteer options
1 parent 9be1959 commit 4d8502d

File tree

4 files changed

+41
-18
lines changed

4 files changed

+41
-18
lines changed

Examples/browser-management/open-close-browser.robot

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,17 @@ ${DEFAULT_BROWSER} pwchrome
1212
Open browser without option
1313
${BROWSER} = Get variable value ${BROWSER} ${DEFAULT_BROWSER}
1414
Open browser http://127.0.0.1:7272/basic-html-elements.html browser=${BROWSER}
15-
15+
16+
Open ssl issue page
17+
${BROWSER} = Get variable value ${BROWSER} ${DEFAULT_BROWSER}
18+
${HEADLESS} = Get variable value ${HEADLESS} ${False}
19+
&{options} = create dictionary
20+
... headless=${HEADLESS}
21+
... ignore_https_errors=${True}
22+
... ignoreHTTPSErrors=${True}
23+
Open browser https://expired.badssl.com/ browser=${BROWSER} options=${options}
24+
Capture Page Screenshot
25+
1626
Switch to new browser
1727
${BROWSER} = Get variable value ${BROWSER} ${DEFAULT_BROWSER}
1828
${HEADLESS} = Get variable value ${HEADLESS} ${False}

PuppeteerLibrary/keywords/browsermanagement.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,19 @@ def open_browser(self, url, browser="chrome", alias=None, options={}):
3131
| height | default 768 |
3232
| emulate | iPhone 11 |
3333
34+
**Other options**
35+
pwchrome, webkit and firefox please visit: https://playwright.dev/python/docs/api/class-browser?_highlight=new_page#browsernew_pagekwargs
36+
chrome please visit: https://pptr.dev/#?product=Puppeteer&version=v8.0.0&show=api-puppeteerlaunchoptions
37+
3438
Example:
3539
3640
| &{options} = | create dictionary | headless=${False} |
3741
| `Open browser` | https://www.w3schools.com/html/html_forms.asp | options=${options} |
3842
3943
"""
44+
if options is None:
45+
options = {}
46+
4047
self.info(url)
4148
library_context = self.ctx.create_library_context(alias, browser)
4249
self.loop.run_until_complete(library_context.start_server(options))

PuppeteerLibrary/playwright/playwright_context.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ class PlaywrightContext(iLibraryContext):
2929
browser: any = None
3030
current_page: any = None
3131
current_iframe = None
32+
33+
page_support_options = ['accept_downloads', 'bypass_csp', 'color_scheme', 'device_scale_factor', 'extra_http_headers', 'geolocation', 'has_touch', 'http_credentials', 'ignore_https_errors', 'is_mobile', 'java_script_enabled', 'locale', 'no_viewport', 'offline', 'permissions', 'proxy', 'record_har_omit_content', 'record_har_path', 'record_video_dir', 'record_video_size', 'timezone_id', 'user_agent', 'viewport']
3234

3335
def __init__(self, browser_type: str):
3436
super().__init__(browser_type)
@@ -43,8 +45,7 @@ async def start_server(self, options: dict={}):
4345
'accept_downloads': True
4446
}
4547
merged_options = default_options
46-
if options is not None:
47-
merged_options = {**merged_options, **options}
48+
merged_options = {**merged_options, **options}
4849

4950
self.playwright = await async_playwright().start()
5051
if self.browser_type == "pwchrome":
@@ -55,7 +56,7 @@ async def start_server(self, options: dict={}):
5556
headless=merged_options['headless'])
5657
elif self.browser_type == "firefox":
5758
self.browser = await self.playwright.firefox.launch(
58-
headless=merged_options['headless'])
59+
headless=merged_options['headless'])
5960
self.browser.accept_downloads = True
6061

6162
async def stop_server(self):
@@ -71,8 +72,14 @@ async def create_new_page(self, options: dict={}) -> BasePage:
7172
device_options = {
7273
'accept_downloads': True
7374
}
75+
76+
for support_key in self.page_support_options:
77+
if support_key in options:
78+
device_options[support_key] = options[support_key]
79+
7480
if 'emulate' in options:
7581
device_options = self.playwright.devices[options['emulate']]
82+
7683
new_page = await self.browser.new_page(**device_options)
7784
self.current_page = PlaywrightPage(new_page)
7885
return self.current_page

PuppeteerLibrary/puppeteer/puppeteer_context.py

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -32,37 +32,36 @@ class PuppeteerContext(iLibraryContext):
3232
'devtools': False
3333
}
3434

35+
page_support_options = ['ignoreHTTPSErrors', 'headless', 'executablePath', 'slowMo', 'defaultViewport', 'handleSIGINT', 'handleSIGTERM', 'handleSIGHUP', 'userDataDir', 'env', 'devtools']
36+
3537
def __init__(self, browser_type: str):
3638
super().__init__(browser_type)
3739

3840
async def start_server(self, options: dict={}):
3941
default_args = []
40-
default_options = {
42+
merged_options = {
4143
'slowMo': 0,
4244
'headless': True,
4345
'devtools': False,
44-
'width': 1366,
45-
'height': 768
46+
'defaultViewport': {
47+
'width': 1366,
48+
'height': 768
49+
}
4650
}
47-
merged_options = default_options
48-
49-
if options is not None:
50-
merged_options = {**merged_options, **options}
51+
merged_options = {**merged_options, **options}
5152

5253
if self.debug_mode is True:
5354
merged_options = {**merged_options, **self.debug_mode_options}
5455

5556
if 'win' not in sys.platform.lower():
5657
default_args = ['--no-sandbox', '--disable-setuid-sandbox']
58+
59+
for support_key in self.page_support_options:
60+
if support_key in options:
61+
merged_options[support_key] = options[support_key]
5762

5863
self.browser = await launch(
59-
headless=merged_options['headless'],
60-
slowMo=merged_options['slowMo'],
61-
devtools=merged_options['devtools'],
62-
defaultViewport={
63-
'width': merged_options['width'],
64-
'height': merged_options['height']
65-
},
64+
**merged_options,
6665
args=default_args)
6766

6867
async def stop_server(self):

0 commit comments

Comments
 (0)