From 29a239ef320c294df96492b61a3c3c9917808a15 Mon Sep 17 00:00:00 2001 From: "Atthaboon Sanurt (P'Art)" Date: Wed, 20 Jan 2021 07:22:29 +0700 Subject: [PATCH] Add extra dropdown keywords (#82) --- PuppeteerLibrary/ikeywords/idropdown_async.py | 10 +++++++++- PuppeteerLibrary/keywords/dropdown.py | 10 ++++++++++ .../async_keywords/playwright_dropdown.py | 16 ++++++++++++++++ .../async_keywords/puppeteer_dropdown.py | 15 +++++++++++++++ 4 files changed, 50 insertions(+), 1 deletion(-) diff --git a/PuppeteerLibrary/ikeywords/idropdown_async.py b/PuppeteerLibrary/ikeywords/idropdown_async.py index e5bf9ea..eabae5f 100644 --- a/PuppeteerLibrary/ikeywords/idropdown_async.py +++ b/PuppeteerLibrary/ikeywords/idropdown_async.py @@ -16,6 +16,14 @@ async def select_from_list_by_label(self, locator, labels): async def get_selected_list_labels(self, locator: str) -> str: pass + @abstractmethod + async def get_list_labels(self, locator: str) -> str: + pass + @abstractmethod async def get_selected_list_values(self, locator: str) -> str: - pass \ No newline at end of file + pass + + @abstractmethod + async def get_list_values(self, locator: str) -> str: + pass diff --git a/PuppeteerLibrary/keywords/dropdown.py b/PuppeteerLibrary/keywords/dropdown.py index 8f7b1f7..8d0aa0b 100644 --- a/PuppeteerLibrary/keywords/dropdown.py +++ b/PuppeteerLibrary/keywords/dropdown.py @@ -39,6 +39,11 @@ def get_selected_list_labels(self, locator): """ return self.loop.run_until_complete(self.get_async_keyword_group().get_selected_list_labels(locator)) + @keyword + def get_list_labels(self, locator): + """ Return the label list of options from element. + """ + return self.loop.run_until_complete(self.get_async_keyword_group().get_list_labels(locator)) @keyword def get_selected_list_value(self, locator): @@ -53,4 +58,9 @@ def get_selected_list_values(self, locator): """ return self.loop.run_until_complete(self.get_async_keyword_group().get_selected_list_values(locator)) + @keyword + def get_list_values(self, locator): + """ Return the value list of options from element. + """ + return self.loop.run_until_complete(self.get_async_keyword_group().get_list_values(locator)) diff --git a/PuppeteerLibrary/playwright/async_keywords/playwright_dropdown.py b/PuppeteerLibrary/playwright/async_keywords/playwright_dropdown.py index 9287c66..cad21a9 100644 --- a/PuppeteerLibrary/playwright/async_keywords/playwright_dropdown.py +++ b/PuppeteerLibrary/playwright/async_keywords/playwright_dropdown.py @@ -27,6 +27,14 @@ async def get_selected_list_labels(self, locator: str) -> str: selected_labels.append((await (await option.getProperty('textContent')).jsonValue())) return selected_labels + async def get_list_labels(self, locator: str) -> str: + element = await self.library_ctx.get_current_page().querySelector_with_selenium_locator(locator) + options = await element.querySelectorAll('option') + selected_labels = [] + for option in options: + selected_labels.append((await (await option.getProperty('textContent')).jsonValue())) + return selected_labels + async def get_selected_list_values(self, locator: str) -> str: element = await self.library_ctx.get_current_page().querySelector_with_selenium_locator(locator) options = await element.querySelectorAll('option:checked') @@ -34,3 +42,11 @@ async def get_selected_list_values(self, locator: str) -> str: for option in options: selected_labels.append((await (await option.getProperty('value')).jsonValue())) return selected_labels + + async def get_list_values(self, locator: str) -> str: + element = await self.library_ctx.get_current_page().querySelector_with_selenium_locator(locator) + options = await element.querySelectorAll('option') + selected_labels = [] + for option in options: + selected_labels.append((await (await option.getProperty('value')).jsonValue())) + return selected_labels \ No newline at end of file diff --git a/PuppeteerLibrary/puppeteer/async_keywords/puppeteer_dropdown.py b/PuppeteerLibrary/puppeteer/async_keywords/puppeteer_dropdown.py index 8194a11..6968194 100644 --- a/PuppeteerLibrary/puppeteer/async_keywords/puppeteer_dropdown.py +++ b/PuppeteerLibrary/puppeteer/async_keywords/puppeteer_dropdown.py @@ -34,6 +34,14 @@ async def get_selected_list_labels(self, locator: str) -> str: selected_labels.append((await (await option.getProperty('textContent')).jsonValue())) return selected_labels + async def get_list_labels(self, locator: str) -> str: + element = await self.library_ctx.get_current_page().querySelector_with_selenium_locator(locator) + options = await element.querySelectorAll('option') + selected_labels = [] + for option in options: + selected_labels.append((await (await option.getProperty('textContent')).jsonValue())) + return selected_labels + async def get_selected_list_values(self, locator: str) -> str: element = await self.library_ctx.get_current_page().querySelector_with_selenium_locator(locator) options = await element.querySelectorAll('option:checked') @@ -42,3 +50,10 @@ async def get_selected_list_values(self, locator: str) -> str: selected_labels.append((await (await option.getProperty('value')).jsonValue())) return selected_labels + async def get_list_values(self, locator: str) -> str: + element = await self.library_ctx.get_current_page().querySelector_with_selenium_locator(locator) + options = await element.querySelectorAll('option') + selected_labels = [] + for option in options: + selected_labels.append((await (await option.getProperty('value')).jsonValue())) + return selected_labels