From d7a6152e7ceb2105985757ae597f5e8b0b0c7933 Mon Sep 17 00:00:00 2001 From: Jani Mikkonen Date: Wed, 12 Oct 2022 17:54:07 +0300 Subject: [PATCH] Unify "index" type of keyword arguments. create_webdriver was marked as returning a str, however, its return value is coming from register_driver which is documented to return int. These where changed to return actual int. switch_driver was only accepting str as "index_or_alias". While aliases are str's since create_driver now returns the actual index as int, accepting both types makes more sense. select and unselect list keywords where typehinted to receive only str as index type - when called from python side, this does not make much sense so changed those to int as RF should do type conversion automatically. Fixes #1791 --- src/SeleniumLibrary/__init__.pyi | 6 +++--- src/SeleniumLibrary/keywords/browsermanagement.py | 4 ++-- src/SeleniumLibrary/keywords/selectelement.py | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/SeleniumLibrary/__init__.pyi b/src/SeleniumLibrary/__init__.pyi index 170390580..47a98e3ce 100644 --- a/src/SeleniumLibrary/__init__.pyi +++ b/src/SeleniumLibrary/__init__.pyi @@ -133,7 +133,7 @@ class SeleniumLibrary: def select_all_from_list(self, locator: Union[selenium.webdriver.remote.webelement.WebElement, str]): ... def select_checkbox(self, locator: Union[selenium.webdriver.remote.webelement.WebElement, str]): ... def select_frame(self, locator: Union[selenium.webdriver.remote.webelement.WebElement, str]): ... - def select_from_list_by_index(self, locator: Union[selenium.webdriver.remote.webelement.WebElement, str], *indexes: str): ... + def select_from_list_by_index(self, locator: Union[selenium.webdriver.remote.webelement.WebElement, str], *indexes: int): ... def select_from_list_by_label(self, locator: Union[selenium.webdriver.remote.webelement.WebElement, str], *labels: str): ... def select_from_list_by_value(self, locator: Union[selenium.webdriver.remote.webelement.WebElement, str], *values: str): ... def select_radio_button(self, group_name: str, value: str): ... @@ -147,7 +147,7 @@ class SeleniumLibrary: def set_window_size(self, width: int, height: int, inner: bool = False): ... def simulate_event(self, locator: Union[selenium.webdriver.remote.webelement.WebElement, str], event: str): ... def submit_form(self, locator: Optional[Union[selenium.webdriver.remote.webelement.WebElement, None, str]] = None): ... - def switch_browser(self, index_or_alias: str): ... + def switch_browser(self, index_or_alias: Union[str, int]): ... def switch_window(self, locator: Union[list, str] = 'MAIN', timeout: Optional[Union[str, None]] = None, browser: str = 'CURRENT'): ... def table_cell_should_contain(self, locator: Union[selenium.webdriver.remote.webelement.WebElement, None, str], row: int, column: int, expected: str, loglevel: str = 'TRACE'): ... def table_column_should_contain(self, locator: Union[selenium.webdriver.remote.webelement.WebElement, None, str], column: int, expected: str, loglevel: str = 'TRACE'): ... @@ -163,7 +163,7 @@ class SeleniumLibrary: def unselect_all_from_list(self, locator: Union[selenium.webdriver.remote.webelement.WebElement, str]): ... def unselect_checkbox(self, locator: Union[selenium.webdriver.remote.webelement.WebElement, str]): ... def unselect_frame(self): ... - def unselect_from_list_by_index(self, locator: Union[selenium.webdriver.remote.webelement.WebElement, str], *indexes: str): ... + def unselect_from_list_by_index(self, locator: Union[selenium.webdriver.remote.webelement.WebElement, str], *indexes: int): ... def unselect_from_list_by_label(self, locator: Union[selenium.webdriver.remote.webelement.WebElement, str], *labels: str): ... def unselect_from_list_by_value(self, locator: Union[selenium.webdriver.remote.webelement.WebElement, str], *values: str): ... def wait_for_condition(self, condition: str, timeout: Optional[Union[datetime.timedelta, None]] = None, error: Optional[Union[str, None]] = None): ... diff --git a/src/SeleniumLibrary/keywords/browsermanagement.py b/src/SeleniumLibrary/keywords/browsermanagement.py index f52ed23c4..b45fe2912 100644 --- a/src/SeleniumLibrary/keywords/browsermanagement.py +++ b/src/SeleniumLibrary/keywords/browsermanagement.py @@ -344,7 +344,7 @@ def _make_new_browser( @keyword def create_webdriver( self, driver_name: str, alias: Optional[str] = None, kwargs={}, **init_kwargs - ) -> str: + ) -> int: """Creates an instance of Selenium WebDriver. Like `Open Browser`, but allows passing arguments to the created @@ -400,7 +400,7 @@ def _wrap_event_firing_webdriver(self, driver): return EventFiringWebDriver(driver, self.ctx.event_firing_webdriver()) @keyword - def switch_browser(self, index_or_alias: str): + def switch_browser(self, index_or_alias: Union[str, int]): """Switches between active browsers using ``index_or_alias``. Indices are returned by the `Open Browser` keyword and aliases can diff --git a/src/SeleniumLibrary/keywords/selectelement.py b/src/SeleniumLibrary/keywords/selectelement.py index 910fb081e..56fa18feb 100644 --- a/src/SeleniumLibrary/keywords/selectelement.py +++ b/src/SeleniumLibrary/keywords/selectelement.py @@ -206,7 +206,7 @@ def select_all_from_list(self, locator: Union[WebElement, str]): select.select_by_index(index) @keyword - def select_from_list_by_index(self, locator: Union[WebElement, str], *indexes: str): + def select_from_list_by_index(self, locator: Union[WebElement, str], *indexes: int): """Selects options from selection list ``locator`` by ``indexes``. Indexes of list options start from 0. @@ -228,7 +228,7 @@ def select_from_list_by_index(self, locator: Union[WebElement, str], *indexes: s ) select = self._get_select_list(locator) for index in indexes: - select.select_by_index(int(index)) + select.select_by_index(index) @keyword def select_from_list_by_value(self, locator: Union[WebElement, str], *values: str): @@ -293,7 +293,7 @@ def unselect_all_from_list(self, locator: Union[WebElement, str]): @keyword def unselect_from_list_by_index( - self, locator: Union[WebElement, str], *indexes: str + self, locator: Union[WebElement, str], *indexes: int ): """Unselects options from selection list ``locator`` by ``indexes``. @@ -316,7 +316,7 @@ def unselect_from_list_by_index( "Un-selecting options works only with multi-selection lists." ) for index in indexes: - select.deselect_by_index(int(index)) + select.deselect_by_index(index) @keyword def unselect_from_list_by_value(