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/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 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..30edd8f 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.clickCount(2) + + ############################## # Status ############################## diff --git a/demoapp/html/basic-html-elements.html b/demoapp/html/basic-html-elements.html index 2ac4e84..414680b 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