|
| 1 | +from PuppeteerLibrary.base.robotlibcore import keyword |
| 2 | +from PuppeteerLibrary.base.librarycomponent import LibraryComponent |
| 3 | +from PuppeteerLibrary.locators import SelectorAbstraction |
| 4 | + |
| 5 | + |
| 6 | +class DropdownKeywordsAsync(LibraryComponent): |
| 7 | + |
| 8 | + @keyword |
| 9 | + async def select_from_list_by_value_async(self, selenium_locator, values): |
| 10 | + selector_value = SelectorAbstraction.get_selector(selenium_locator) |
| 11 | + if SelectorAbstraction.is_xpath(selenium_locator): |
| 12 | + await self.ctx.get_current_page().evaluate(''' |
| 13 | + element = document.evaluate('{selector_value}//option[contains(@value, "{values}")]', document, null, XPathResult.ANY_TYPE, null).iterateNext(); |
| 14 | + element.selected = true; |
| 15 | + '''.format(selector_value=selector_value, values=values)) |
| 16 | + else: |
| 17 | + await self.ctx.get_current_page().select(selector_value, values) |
| 18 | + |
| 19 | + @keyword |
| 20 | + async def select_from_list_by_label_async(self, selenium_locator, labels): |
| 21 | + selector_value = SelectorAbstraction.get_selector(selenium_locator) |
| 22 | + if SelectorAbstraction.is_xpath(selenium_locator): |
| 23 | + await self.ctx.get_current_page().evaluate(''' |
| 24 | + element = document.evaluate('{selector_value}//option[text()=\"{label}\"]', document, null, XPathResult.ANY_TYPE, null).iterateNext(); |
| 25 | + element.selected = true; |
| 26 | + '''.format(selector_value=selector_value, label=labels)) |
| 27 | + else: |
| 28 | + await self.ctx.get_current_page().evaluate(''' |
| 29 | + selector_element = document.querySelector('{selector_value}'); |
| 30 | + element = document.evaluate('//option[text()=\"{label}\"]', selector_element, null, XPathResult.ANY_TYPE, null).iterateNext(); |
| 31 | + element.selected = true; |
| 32 | + '''.format(selector_value=selector_value, label=labels)) |
0 commit comments