Skip to content

Commit 6dab772

Browse files
committed
Remove validation of locators and strategies in python client
Validation should be performed by the driver implementation
1 parent 874dfa8 commit 6dab772

File tree

4 files changed

+12
-87
lines changed

4 files changed

+12
-87
lines changed

py/selenium/webdriver/common/by.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,3 @@ class By(object):
3232
TAG_NAME = "tag name"
3333
CLASS_NAME = "class name"
3434
CSS_SELECTOR = "css selector"
35-
36-
@classmethod
37-
def is_valid(cls, by):
38-
for attr in dir(cls):
39-
if by == getattr(cls, attr):
40-
return True
41-
return False

py/selenium/webdriver/remote/webdriver.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
from .mobile import Mobile
3030
from .file_detector import FileDetector, LocalFileDetector
3131
from selenium.common.exceptions import WebDriverException
32-
from selenium.common.exceptions import InvalidSelectorException
3332
from selenium.webdriver.common.by import By
3433
from selenium.webdriver.common.html5.application_cache import ApplicationCache
3534

@@ -730,8 +729,6 @@ def find_element(self, by=By.ID, value=None):
730729
731730
:rtype: WebElement
732731
"""
733-
if not By.is_valid(by) or not isinstance(value, str):
734-
raise InvalidSelectorException("Invalid locator values passed in")
735732
if self.w3c:
736733
if by == By.ID:
737734
by = By.CSS_SELECTOR
@@ -756,8 +753,6 @@ def find_elements(self, by=By.ID, value=None):
756753
757754
:rtype: list of WebElement
758755
"""
759-
if not By.is_valid(by) or not isinstance(value, str):
760-
raise InvalidSelectorException("Invalid locator values passed in")
761756
if self.w3c:
762757
if by == By.ID:
763758
by = By.CSS_SELECTOR

py/selenium/webdriver/remote/webelement.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626

2727
from .command import Command
2828
from selenium.common.exceptions import WebDriverException
29-
from selenium.common.exceptions import InvalidSelectorException
3029
from selenium.webdriver.common.by import By
3130
from selenium.webdriver.common.utils import keys_to_typing
3231

@@ -457,9 +456,6 @@ def _execute(self, command, params=None):
457456
return self._parent.execute(command, params)
458457

459458
def find_element(self, by=By.ID, value=None):
460-
if not By.is_valid(by) or not isinstance(value, str):
461-
raise InvalidSelectorException("Invalid locator values passed in")
462-
463459
if self._w3c:
464460
if by == By.ID:
465461
by = By.CSS_SELECTOR
@@ -477,9 +473,6 @@ def find_element(self, by=By.ID, value=None):
477473
{"using": by, "value": value})['value']
478474

479475
def find_elements(self, by=By.ID, value=None):
480-
if not By.is_valid(by) or not isinstance(value, str):
481-
raise InvalidSelectorException("Invalid locator values passed in")
482-
483476
if self._w3c:
484477
if by == By.ID:
485478
by = By.CSS_SELECTOR

py/test/selenium/webdriver/common/children_finding_tests.py

Lines changed: 12 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,13 @@
1515
# specific language governing permissions and limitations
1616
# under the License.
1717

18-
1918
import unittest
20-
from selenium.common.exceptions import NoSuchElementException
21-
from selenium.common.exceptions import InvalidSelectorException
22-
from selenium.webdriver.common.by import By
19+
20+
import pytest
21+
from selenium.common.exceptions import (
22+
WebDriverException,
23+
NoSuchElementException)
24+
2325

2426
class ChildrenFindingTests(unittest.TestCase):
2527

@@ -156,77 +158,19 @@ def test_should_be_able_to_find_multiple_elements_by_css_selector(self):
156158
'*[name="selectomatic"]')
157159
self.assertEqual(2, len(elements))
158160

159-
def test_should_throw_an_error_if_user_passes_in_integer(self):
160-
self._load_page("nestedElements")
161-
element = self.driver.find_element_by_name("form2")
162-
try:
163-
element.find_element(By.ID, 333333)
164-
self.fail("_should have thrown _web_driver Exception")
165-
except InvalidSelectorException:
166-
pass #_this is expected
167-
168-
def test_should_throw_an_error_if_user_passes_in_tuple(self):
169-
self._load_page("nestedElements")
170-
element = self.driver.find_element_by_name("form2")
171-
try:
172-
element.find_element((By.ID, 333333))
173-
self.fail("_should have thrown _web_driver Exception")
174-
except InvalidSelectorException:
175-
pass #_this is expected
176-
177-
def test_should_throw_an_error_if_user_passes_inNone(self):
178-
self._load_page("nestedElements")
179-
element = self.driver.find_element_by_name("form2")
180-
try:
181-
element.find_element(By.ID, None)
182-
self.fail("_should have thrown _web_driver Exception")
183-
except InvalidSelectorException:
184-
pass #_this is expected
185-
186161
def test_should_throw_an_error_if_user_passes_in_invalid_by(self):
187162
self._load_page("nestedElements")
188163
element = self.driver.find_element_by_name("form2")
189-
try:
190-
element.find_element("css", "body")
191-
self.fail("_should have thrown _web_driver Exception")
192-
except InvalidSelectorException:
193-
pass #_this is expected
194-
195-
def test_should_throw_an_error_if_user_passes_in_integer_when_find_elements(self):
196-
self._load_page("nestedElements")
197-
element = self.driver.find_element_by_name("form2")
198-
try:
199-
element.find_elements(By.ID, 333333)
200-
self.fail("_should have thrown _web_driver Exception")
201-
except InvalidSelectorException:
202-
pass #_this is expected
203-
204-
def test_should_throw_an_error_if_user_passes_in_tuple_when_find_elements(self):
205-
self._load_page("nestedElements")
206-
element = self.driver.find_element_by_name("form2")
207-
try:
208-
element.find_elements((By.ID, 333333))
209-
self.fail("_should have thrown _web_driver Exception")
210-
except InvalidSelectorException:
211-
pass #_this is expected
212-
213-
def test_should_throw_an_error_if_user_passes_inNone_when_find_elements(self):
214-
self._load_page("nestedElements")
215-
element = self.driver.find_element_by_name("form2")
216-
try:
217-
element.find_elements(By.ID, None)
218-
self.fail("should have thrown webdriver Exception")
219-
except InvalidSelectorException:
220-
pass #_this is expected
164+
with pytest.raises(WebDriverException) as excinfo:
165+
element.find_element("foo", "bar")
166+
assert 'Unsupported locator strategy: foo' in str(excinfo.value)
221167

222168
def test_should_throw_an_error_if_user_passes_in_invalid_by_when_find_elements(self):
223169
self._load_page("nestedElements")
224170
element = self.driver.find_element_by_name("form2")
225-
try:
226-
element.find_elements("css", "body")
227-
self.fail("Should have thrown WebDriver Exception")
228-
except InvalidSelectorException:
229-
pass #_this is expected
171+
with pytest.raises(WebDriverException) as excinfo:
172+
element.find_elements("foo", "bar")
173+
assert 'Unsupported locator strategy: foo' in str(excinfo.value)
230174

231175
def _page_url(self, name):
232176
return self.webserver.where_is(name + '.html')

0 commit comments

Comments
 (0)