Skip to content

Commit 1c1a3a4

Browse files
authored
Playwright chrome support print pdf (#88)
* playwright chrome support emulate mode * Update playwright support pdf mode and headless mode * Add hot fix unstable mouse move event for firefox
1 parent a6ab27e commit 1c1a3a4

File tree

7 files changed

+29
-15
lines changed

7 files changed

+29
-15
lines changed

Examples/browser-management/emulator-mode.robot

+1-2
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,10 @@ Suite Teardown Close Puppeteer
44

55
*** Variables ***
66
${DEFAULT_BROWSER} chrome
7-
# ${DEFAULT_BROWSER} webkit
87

98
*** Test Cases ***
109
Example enable emulator mode
11-
[Tags] Ignore_firefox Ignore_pwchrome
10+
[Tags] Ignore_firefox
1211
[Teardown] Close All Browser
1312
${BROWSER} = Get variable value ${BROWSER} ${DEFAULT_BROWSER}
1413
${HEADLESS} = Get variable value ${HEADLESS} ${False}

Examples/utilities/generate-pdf.robot

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,21 @@ Suite Teardown Close Puppeteer
66

77

88
*** Variables ***
9-
${DEFAULT_BROWSER} chrome
9+
${DEFAULT_BROWSER} firefox
1010
${HOME_PAGE_URL} http://127.0.0.1:7272/basic-html-elements.html
1111

1212

1313
*** Test Cases ***
1414
Generate pdf file
15-
[Tags] Ignore_webkit Ignore_firefox Ignore_pwchrome
15+
[Tags] Ignore_webkit Ignore_firefox
1616
[Documentation] Only support on chrome headless mode
1717
Print as pdf
1818

1919

2020
*** Keywords ***
2121
Open browser to test page
2222
${BROWSER} = Get variable value ${BROWSER} ${DEFAULT_BROWSER}
23-
${HEADLESS} = Get variable value ${HEADLESS} ${True}
23+
${HEADLESS} = Set Variable ${True}
2424
&{options} = create dictionary headless=${HEADLESS}
2525
Open browser ${HOME_PAGE_URL} browser=${BROWSER} options=${options}
2626

PuppeteerLibrary/playwright/async_keywords/playwright_mouseevent.py

+3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import time
12
from robot.libraries.BuiltIn import BuiltIn
23
from PuppeteerLibrary.ikeywords.imouseevent_async import iMouseEventAsync
34

@@ -18,6 +19,8 @@ async def mouse_down(self, locator):
1819
bounding_box['x'] + bounding_box['width'] / 2,
1920
bounding_box['y'] + bounding_box['height'] / 2)
2021
await self.library_ctx.get_current_page().get_page().mouse.down()
22+
# TODO: Workaround for firefox not throw exception when mouse down and then mouse move
23+
time.sleep(0.5)
2124

2225
async def mouse_up(self):
2326
await self.library_ctx.get_current_page().get_page().mouse.up()

PuppeteerLibrary/playwright/async_keywords/playwright_pdf.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,5 @@ def __init__(self, library_ctx):
99
async def print_as_pdf(self, filename=DEFAULT_FILENAME_PAGE):
1010
path = self._get_pdf_path(filename)
1111
await self.library_ctx.get_current_page().get_page().emulateMedia('screen')
12-
await self.library_ctx.get_current_page().get_page().pdf(
13-
path=path
14-
)
12+
await self.library_ctx.get_current_page().get_page().pdf(path=path)
1513
self.info('Print as pdf: '+path)

PuppeteerLibrary/playwright/playwright_context.py

+17-3
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,27 @@ def __init__(self, browser_type: str):
3434
super().__init__(browser_type)
3535

3636
async def start_server(self, options: dict=None):
37+
default_options = {
38+
'slowMo': 0,
39+
'headless': True,
40+
'devtools': False,
41+
'width': 1366,
42+
'height': 768
43+
}
44+
merged_options = default_options
45+
if options is not None:
46+
merged_options = {**merged_options, **options}
47+
3748
self.playwright = await async_playwright().start()
3849
if self.browser_type == "pwchrome":
39-
self.browser = await self.playwright.chromium.launch(headless=False)
50+
self.browser = await self.playwright.chromium.launch(
51+
headless=merged_options['headless'])
4052
elif self.browser_type == "webkit":
41-
self.browser = await self.playwright.webkit.launch(headless=False)
53+
self.browser = await self.playwright.webkit.launch(
54+
headless=merged_options['headless'])
4255
elif self.browser_type == "firefox":
43-
self.browser = await self.playwright.firefox.launch(headless=False)
56+
self.browser = await self.playwright.firefox.launch(
57+
headless=merged_options['headless'])
4458
self.browser.acceptDownloads = True
4559

4660
async def stop_server(self):

requirements.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
versioneer>=0.18
22
robotframework>=3.2.1
3-
playwright==0.152.0
3+
playwright==0.171.1
44
# pyppeteer>=0.2.2
55
git+https://github.com/qahive/pyppeteer.git@dev2
6-
robotframework-libdoc2json>=0.4
6+
robotframework-libdoc2json>=0.4

setup.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@
2626
packages=find_packages(),
2727
classifiers=[
2828
"Programming Language :: Python :: 3",
29-
"Programming Language :: Python :: 3.6",
3029
"Programming Language :: Python :: 3.7",
3130
"Programming Language :: Python :: 3.8",
31+
"Programming Language :: Python :: 3.9",
3232
"License :: OSI Approved :: Apache Software License",
3333
"Operating System :: OS Independent",
3434
"Topic :: Software Development :: Testing",
@@ -39,7 +39,7 @@
3939
platforms='any',
4040
install_requires=[
4141
'robotframework>=3.2.1',
42-
'playwright>=0.152.0',
42+
'playwright>=0.171.1',
4343
'pyppeteer>=0.2.2',
4444
],
4545
# python_requires='>3.5',

0 commit comments

Comments
 (0)