Skip to content

Commit d808e9c

Browse files
authored
Execute javascript code (#16)
* Add javascript keyword * Update keywords doc
1 parent fdb6361 commit d808e9c

File tree

6 files changed

+67
-2
lines changed

6 files changed

+67
-2
lines changed

Examples/javascript-demo.robot

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
*** Settings ***
2+
Library PuppeteerLibrary
3+
Test Setup Open browser to test page
4+
Test Teardown Close Browser
5+
6+
7+
*** Variables ***
8+
${HOME_PAGE_URL} http://127.0.0.1:7272
9+
10+
11+
*** Test Cases ***
12+
Execute javascript command
13+
Handle Alert ACCEPT
14+
Execute Javascript console.log('Hi five');
15+
Execute Javascript alert('Hello world');
16+
17+
18+
*** Keywords ***
19+
Open browser to test page
20+
${HEADLESS} Get variable value ${HEADLESS} ${False}
21+
&{options} = create dictionary headless=${HEADLESS}
22+
Open browser ${HOME_PAGE_URL} options=${options}
23+

PuppeteerLibrary/__init__.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
from robot.api import logger
44
from pyppeteer.browser import Browser
55
from robot.libraries.BuiltIn import BuiltIn
6-
76
from PuppeteerLibrary.custom_elements.SPage import SPage
87
from PuppeteerLibrary.base.robotlibcore import DynamicCore
98
from PuppeteerLibrary.keywords import (
@@ -14,6 +13,8 @@
1413
ElementKeywordsAsync,
1514
FormElementKeywords,
1615
FormElementKeywordsAsync,
16+
JavascriptKeywords,
17+
JavascriptKeywordsAsync,
1718
ScreenshotKeywords,
1819
ScreenshotKeywordsAsync,
1920
UtilityKeywords,
@@ -77,6 +78,7 @@ def __init__(self):
7778
BrowserManagementKeywords(self),
7879
ElementKeywords(self),
7980
FormElementKeywords(self),
81+
JavascriptKeywords(self),
8082
ScreenshotKeywords(self),
8183
UtilityKeywords(self),
8284
WaitingKeywords(self)
@@ -87,6 +89,7 @@ def __init__(self):
8789
AlertKeywordsAsync(self),
8890
ElementKeywordsAsync(self),
8991
FormElementKeywordsAsync(self),
92+
JavascriptKeywordsAsync(self),
9093
ScreenshotKeywordsAsync(self),
9194
WaitingKeywordsAsync(self)
9295
]

PuppeteerLibrary/keywords/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
from .element_async import ElementKeywordsAsync
66
from .formelement import FormElementKeywords
77
from .formelement_async import FormElementKeywordsAsync
8+
from .javascript import JavascriptKeywords
9+
from .javascript_async import JavascriptKeywordsAsync
810
from .screenshot import ScreenshotKeywords
911
from .screenshot_async import ScreenshotKeywordsAsync
1012
from .utility import UtilityKeywords
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
from PuppeteerLibrary.base.robotlibcore import keyword
2+
from PuppeteerLibrary.base.librarycomponent import LibraryComponent
3+
from PuppeteerLibrary.keywords.javascript_async import JavascriptKeywordsAsync
4+
5+
6+
class JavascriptKeywords(LibraryComponent):
7+
8+
def __init__(self, ctx):
9+
self.ctx = ctx
10+
self.async_func = JavascriptKeywordsAsync(self.ctx)
11+
12+
@keyword
13+
def execute_javascript(self, code):
14+
"""Executes the given JavaScript code
15+
16+
Examples:
17+
| `Handle Alert` | ACCEPT |
18+
| `Execute Javascript` | alert('Hello world'); |
19+
20+
21+
Examples:
22+
| `Execute Javascript` | console.log('Hi 5'); |
23+
24+
"""
25+
return self.loop.run_until_complete(self.async_func.execute_javascript_async(code))
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
from PuppeteerLibrary.base.robotlibcore import keyword
2+
from PuppeteerLibrary.base.librarycomponent import LibraryComponent
3+
4+
5+
class JavascriptKeywordsAsync(LibraryComponent):
6+
7+
def __init__(self, ctx):
8+
self.ctx = ctx
9+
10+
@keyword
11+
async def execute_javascript_async(self, code):
12+
return await self.ctx.get_current_page().evaluate(code)

docs/PuppeteerLibrary.html

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)