From 3a9509ec995a9f474f82af1a51a7dff951d564fb Mon Sep 17 00:00:00 2001 From: penploy Date: Mon, 29 Nov 2021 10:03:40 +0700 Subject: [PATCH 1/5] double-click Add double click keyword --- PuppeteerLibrary/ikeywords/ielement_async.py | 4 ++++ PuppeteerLibrary/keywords/element.py | 19 +++++++++++++++++++ .../async_keywords/playwright_element.py | 7 +++++++ .../async_keywords/puppeteer_element.py | 5 +++++ 4 files changed, 35 insertions(+) diff --git a/PuppeteerLibrary/ikeywords/ielement_async.py b/PuppeteerLibrary/ikeywords/ielement_async.py index 5f2e4a7..e63d6be 100644 --- a/PuppeteerLibrary/ikeywords/ielement_async.py +++ b/PuppeteerLibrary/ikeywords/ielement_async.py @@ -42,6 +42,10 @@ async def upload_file(self, locator: str, file_path: str): async def press_keys(self, locator: str, *keys: str): pass + @abstractmethod + async def double_click_element(self, locator: str, noWaitAfter: str='False'): + pass + ############################## # Status ############################## diff --git a/PuppeteerLibrary/keywords/element.py b/PuppeteerLibrary/keywords/element.py index 0bf829d..625b686 100644 --- a/PuppeteerLibrary/keywords/element.py +++ b/PuppeteerLibrary/keywords/element.py @@ -98,6 +98,25 @@ def press_keys(self, locator, *keys): self.info(f"Sending key(s) {keys} to {locator} element.") return self.loop.run_until_complete(self.get_async_keyword_group().press_keys(locator, *keys)) + @keyword + def double_click_element(self, locator, noWaitAfter='False'): + """Double clicks element identified by ``locator``. + + The ``noWaitAfter`` argument specifies skip wait for animation after click. + Only support for webkit and safari (Puppeteer) + + Example: + + | `Double Click Element` | id:register | | + | `Double Click Element` | id:register | ${True} | + """ + self.info(f"Double Clicking element '{locator}'.") + self.loop.run_until_complete(self.get_async_keyword_group().double_click_element( + locator=locator, + noWaitAfter=noWaitAfter + )) + + ############################## # Status ############################## diff --git a/PuppeteerLibrary/playwright/async_keywords/playwright_element.py b/PuppeteerLibrary/playwright/async_keywords/playwright_element.py index 5a66fee..27e7823 100644 --- a/PuppeteerLibrary/playwright/async_keywords/playwright_element.py +++ b/PuppeteerLibrary/playwright/async_keywords/playwright_element.py @@ -63,6 +63,13 @@ async def press_keys(self, locator: str, *keys: str): for key in keys: await element.press(key) + async def double_click_element(self, locator: str, noWaitAfter: str='False'): + noWaitAfter = str2bool(noWaitAfter) + element = await self.library_ctx.get_current_page().querySelector_with_selenium_locator(locator) + await element.dblclick( + no_wait_after=noWaitAfter + ) + ############################## # Status ############################## diff --git a/PuppeteerLibrary/puppeteer/async_keywords/puppeteer_element.py b/PuppeteerLibrary/puppeteer/async_keywords/puppeteer_element.py index a6f58c6..79c5ab1 100644 --- a/PuppeteerLibrary/puppeteer/async_keywords/puppeteer_element.py +++ b/PuppeteerLibrary/puppeteer/async_keywords/puppeteer_element.py @@ -57,6 +57,11 @@ async def press_keys(self, locator: str, *keys: str): for key in keys: await element.press(key) + async def double_click_element(self, locator: str, noWaitAfter: str='False'): + element = await self.library_ctx.get_current_page().querySelector_with_selenium_locator(locator) + await element.dblclick() + + ############################## # Status ############################## From 8d7a17d8ec4c4cba1bf73463ae9c9b638737480c Mon Sep 17 00:00:00 2001 From: penploy Date: Mon, 29 Nov 2021 15:52:47 +0700 Subject: [PATCH 2/5] double-click Add demo app for double click and add test --- Examples/form-handler/click-element.robot | 6 +++++- demoapp/html/basic-html-elements.html | 26 +++++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/Examples/form-handler/click-element.robot b/Examples/form-handler/click-element.robot index 16e8912..4b79232 100644 --- a/Examples/form-handler/click-element.robot +++ b/Examples/form-handler/click-element.robot @@ -15,7 +15,11 @@ Click link Click Button Open browser to test page http://127.0.0.1:7272/basic-html-elements.html Click Button id=get_ajax - + +Double Click Element + Open browser to test page http://127.0.0.1:7272/basic-html-elements.html + Double Click Element id=double_click_get_id + Click Image Open browser to test page http://127.0.0.1:7272/basic-html-elements.html Click Image id=gate diff --git a/demoapp/html/basic-html-elements.html b/demoapp/html/basic-html-elements.html index 2ac4e84..7c9bc19 100644 --- a/demoapp/html/basic-html-elements.html +++ b/demoapp/html/basic-html-elements.html @@ -66,6 +66,32 @@

Alert


+
+
+

Double Click

+
+
+ + Content... + +
+
+
+

Browser Management

From 502a63a1ef22ca6cf2931ad359d82e2780ee5abb Mon Sep 17 00:00:00 2001 From: penploy Date: Mon, 29 Nov 2021 15:59:47 +0700 Subject: [PATCH 3/5] double-click fixed count element in system test --- Examples/form-handler/element-properties.robot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Examples/form-handler/element-properties.robot b/Examples/form-handler/element-properties.robot index 9e291c4..ba5bb4d 100644 --- a/Examples/form-handler/element-properties.robot +++ b/Examples/form-handler/element-properties.robot @@ -12,7 +12,7 @@ ${HOME_PAGE_URL} http://127.0.0.1:7272/basic-html-elements.html *** Test Cases *** Count elements ${No of h2} = Get Element Count css=h2 - Should Be Equal As Numbers 14 ${No of h2} + Should Be Equal As Numbers 15 ${No of h2} Count non existing element Set Timeout 1s From 50993ca9c8b5dd4d2f5af6b2e608035f66b920d8 Mon Sep 17 00:00:00 2001 From: penploy Date: Mon, 29 Nov 2021 16:27:27 +0700 Subject: [PATCH 4/5] double-click fixed ajax request in double click element --- demoapp/html/basic-html-elements.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demoapp/html/basic-html-elements.html b/demoapp/html/basic-html-elements.html index 7c9bc19..414680b 100644 --- a/demoapp/html/basic-html-elements.html +++ b/demoapp/html/basic-html-elements.html @@ -84,7 +84,7 @@

Double Click

this.responseText; } }; - xhttp.open("GET", "contents/ajax_info.json?count=2", true); + xhttp.open("GET", "contents/ajax_info.json?count=3", true); xhttp.send(); } From 7929dcc063c3edeba7c36b83aaeff28be13f9f55 Mon Sep 17 00:00:00 2001 From: penploy Date: Mon, 29 Nov 2021 18:20:37 +0700 Subject: [PATCH 5/5] double-click Fixed puppeteer to using countclick 2 --- PuppeteerLibrary/puppeteer/async_keywords/puppeteer_element.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PuppeteerLibrary/puppeteer/async_keywords/puppeteer_element.py b/PuppeteerLibrary/puppeteer/async_keywords/puppeteer_element.py index 79c5ab1..30edd8f 100644 --- a/PuppeteerLibrary/puppeteer/async_keywords/puppeteer_element.py +++ b/PuppeteerLibrary/puppeteer/async_keywords/puppeteer_element.py @@ -59,7 +59,7 @@ async def press_keys(self, locator: str, *keys: str): async def double_click_element(self, locator: str, noWaitAfter: str='False'): element = await self.library_ctx.get_current_page().querySelector_with_selenium_locator(locator) - await element.dblclick() + await element.clickCount(2) ##############################