diff --git a/src/Selenium2Library/locators/elementfinder.py b/src/Selenium2Library/locators/elementfinder.py index 821d183f8..80963ae79 100644 --- a/src/Selenium2Library/locators/elementfinder.py +++ b/src/Selenium2Library/locators/elementfinder.py @@ -29,8 +29,8 @@ def find(self, browser, locator, tag=None): # Strategy routines, private def _find_by_identifier(self, browser, criteria, tag, constraints): - elements = browser.find_elements_by_id(criteria) - elements.extend(browser.find_elements_by_name(criteria)) + elements = browser.find_elements_by_id(criteria) or [] + elements.extend(browser.find_elements_by_name(criteria) or []) return self._filter_elements(elements, tag, constraints) def _find_by_id(self, browser, criteria, tag, constraints): @@ -92,7 +92,7 @@ def _find_by_key_attrs(self, browser, criteria, tag, constraints): ' and '.join(xpath_constraints) + ' and ' if len(xpath_constraints) > 0 else '', ' or '.join(xpath_searchers)) - return browser.find_elements_by_xpath(xpath) + return browser.find_elements_by_xpath(xpath) or [] # Private @@ -138,6 +138,7 @@ def _element_matches(self, element, tag, constraints): return True def _filter_elements(self, elements, tag, constraints): + if elements is None: elements = [] if tag is None: return elements return filter( lambda element: self._element_matches(element, tag, constraints), diff --git a/test/unit/locators/test_elementfinder.py b/test/unit/locators/test_elementfinder.py index e3cc2fbe9..cdbed3cdc 100644 --- a/test/unit/locators/test_elementfinder.py +++ b/test/unit/locators/test_elementfinder.py @@ -316,6 +316,15 @@ def test_find_by_id_with_synonym_and_constraints(self): result = finder.find(browser, "id=test1", tag='file upload') self.assertEqual(result, [elements[7]]) + def test_webdriver_find_returns_none(self): + finder = ElementFinder() + browser = mock() + + for locator in ("identifier=it", "id=it", "name=it", "xpath=//div", "dom=document.images[1]", "link=it", "css=div.it", + "tag=div", "default"): + result = finder.find(browser, locator) + self.assertEqual(result, []) + def _make_mock_elements(self, *tags): elements = [] for tag in tags: