diff --git a/src/SeleniumLibrary/__init__.pyi b/src/SeleniumLibrary/__init__.pyi index debbc4efa..deebd5493 100644 --- a/src/SeleniumLibrary/__init__.pyi +++ b/src/SeleniumLibrary/__init__.pyi @@ -186,6 +186,7 @@ class SeleniumLibrary: def wait_until_location_is_not(self, location: str, timeout: Optional[Optional] = None, message: Optional[Optional] = None): ... def wait_until_page_contains(self, text: str, timeout: Optional[Optional] = None, error: Optional[Optional] = None): ... def wait_until_page_contains_element(self, locator: Union, timeout: Optional[Optional] = None, error: Optional[Optional] = None, limit: Optional[Optional] = None): ... + def wait_until_page_contains_any_of_elements(self, locators: list[Union[WebElement, None, str]], timeout: Optional[timedelta] = None, error: Optional[str] = None): ... def wait_until_page_does_not_contain(self, text: str, timeout: Optional[Optional] = None, error: Optional[Optional] = None): ... def wait_until_page_does_not_contain_element(self, locator: Union, timeout: Optional[Optional] = None, error: Optional[Optional] = None, limit: Optional[Optional] = None): ... # methods from library. diff --git a/src/SeleniumLibrary/keywords/waiting.py b/src/SeleniumLibrary/keywords/waiting.py index eeec6756e..eff03542f 100644 --- a/src/SeleniumLibrary/keywords/waiting.py +++ b/src/SeleniumLibrary/keywords/waiting.py @@ -257,6 +257,29 @@ def wait_until_page_contains_element( error, ) + @keyword + def wait_until_page_contains_any_of_elements( + self, + locators: list[Union[WebElement, None, str]], + timeout: Optional[timedelta] = None, + error: Optional[str] = None, + ): + """Waits until any of the element locators in ``locators`` appears on the current page. + + Fails if ``timeout`` expires before the element appears. See + the `Timeouts` section for more information about using timeouts and + their default value and the `Locating elements` section for details + about the locator syntax. + + ``error`` can be used to override the default error message. + """ + return self._wait_until( + lambda: any([self.find_element(locator, required=False) for locator in locators]), + f"Elements did not appear in <TIMEOUT>: \n '{locators}'", + timeout, + error, + ) + @keyword def wait_until_page_does_not_contain_element( self,