Skip to content

Commit

Permalink
add some tests for s.w.support.relative_locator
Browse files Browse the repository at this point in the history
  • Loading branch information
pinterior committed Nov 2, 2023
1 parent fd834b7 commit 0e958aa
Showing 1 changed file with 88 additions and 0 deletions.
88 changes: 88 additions & 0 deletions py/test/selenium/webdriver/support/relative_by_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,14 @@ def test_should_be_able_to_find_first_one(driver, pages):
assert el.get_attribute("id") == "mid"


def test_should_be_able_to_find_first_one_by_locator(driver, pages):
pages.load("relative_locators.html")

el = driver.find_element(with_tag_name("p").above({By.ID: "below"}))

assert el.get_attribute("id") == "mid"


def test_should_be_able_to_find_elements_above_another(driver, pages):
pages.load("relative_locators.html")
lowest = driver.find_element(By.ID, "below")
Expand All @@ -42,6 +50,16 @@ def test_should_be_able_to_find_elements_above_another(driver, pages):
assert "mid" in ids


def test_should_be_able_to_find_elements_above_another_by_locator(driver, pages):
pages.load("relative_locators.html")

elements = driver.find_elements(with_tag_name("p").above({By.ID: "below"}))

ids = [el.get_attribute("id") for el in elements]
assert "above" in ids
assert "mid" in ids


def test_should_be_able_to_combine_filters(driver, pages):
pages.load("relative_locators.html")

Expand All @@ -55,6 +73,15 @@ def test_should_be_able_to_combine_filters(driver, pages):
assert "third" in ids


def test_should_be_able_to_combine_filters_by_locator(driver, pages):
pages.load("relative_locators.html")

elements = driver.find_elements(with_tag_name("td").above({By.ID: "center"}).to_right_of({By.ID: "second"}))

ids = [el.get_attribute("id") for el in elements]
assert "third" in ids


def test_should_be_able_to_use_css_selectors(driver, pages):
pages.load("relative_locators.html")

Expand All @@ -68,6 +95,17 @@ def test_should_be_able_to_use_css_selectors(driver, pages):
assert "third" in ids


def test_should_be_able_to_use_css_selectors_by_locator(driver, pages):
pages.load("relative_locators.html")

elements = driver.find_elements(
locate_with(By.CSS_SELECTOR, "td").above({By.ID: "center"}).to_right_of({By.ID: "second"})
)

ids = [el.get_attribute("id") for el in elements]
assert "third" in ids


def test_should_be_able_to_use_xpath(driver, pages):
pages.load("relative_locators.html")

Expand All @@ -81,6 +119,15 @@ def test_should_be_able_to_use_xpath(driver, pages):
assert "fourth" in ids


def test_should_be_able_to_use_xpath_by_locator(driver, pages):
pages.load("relative_locators.html")

elements = driver.find_elements(locate_with(By.XPATH, "//td[1]").below({By.ID: "second"}).above({By.ID: "seventh"}))

ids = [el.get_attribute("id") for el in elements]
assert "fourth" in ids


def test_no_such_element_is_raised_rather_than_index_error(driver, pages):
pages.load("relative_locators.html")
with pytest.raises(NoSuchElementException) as exc:
Expand All @@ -89,6 +136,13 @@ def test_no_such_element_is_raised_rather_than_index_error(driver, pages):
assert "Cannot locate relative element with: {'id': 'nonexistentid'}" in exc.value.msg


def test_no_such_element_is_raised_rather_than_index_error_by_locator(driver, pages):
pages.load("relative_locators.html")
with pytest.raises(NoSuchElementException) as exc:
driver.find_element(locate_with(By.ID, "nonexistentid").above({By.ID: "second"}))
assert "Cannot locate relative element with: {'id': 'nonexistentid'}" in exc.value.msg


def test_near_locator_should_find_near_elements(driver, pages):
pages.load("relative_locators.html")
rect1 = driver.find_element(By.ID, "rect1")
Expand All @@ -98,6 +152,14 @@ def test_near_locator_should_find_near_elements(driver, pages):
assert el.get_attribute("id") == "rect2"


def test_near_locator_should_find_near_elements_by_locator(driver, pages):
pages.load("relative_locators.html")

el = driver.find_element(locate_with(By.ID, "rect2").near({By.ID: "rect1"}))

assert el.get_attribute("id") == "rect2"


def test_near_locator_should_not_find_far_elements(driver, pages):
pages.load("relative_locators.html")
rect3 = driver.find_element(By.ID, "rect3")
Expand All @@ -106,3 +168,29 @@ def test_near_locator_should_not_find_far_elements(driver, pages):
driver.find_element(locate_with(By.ID, "rect4").near(rect3))

assert "Cannot locate relative element with: {'id': 'rect4'}" in exc.value.msg


def test_near_locator_should_not_find_far_elements_by_locator(driver, pages):
pages.load("relative_locators.html")

with pytest.raises(NoSuchElementException) as exc:
driver.find_element(locate_with(By.ID, "rect4").near({By.ID: "rect3"}))

assert "Cannot locate relative element with: {'id': 'rect4'}" in exc.value.msg


def test_near_locator_should_find_far_elements(driver, pages):
pages.load("relative_locators.html")
rect3 = driver.find_element(By.ID, "rect3")

el = driver.find_element(locate_with(By.ID, "rect4").near(rect3, 100))

assert el.get_attribute("id") == "rect4"


def test_near_locator_should_find_far_elements_by_locator(driver, pages):
pages.load("relative_locators.html")

el = driver.find_element(locate_with(By.ID, "rect4").near({By.ID: "rect3"}, 100))

assert el.get_attribute("id") == "rect4"

0 comments on commit 0e958aa

Please sign in to comment.