Update example tests

This commit is contained in:
Michael Mintz 2021-04-10 13:25:56 -04:00
parent a401b37d7b
commit 802fe0d563
12 changed files with 88 additions and 82 deletions

View File

@ -4,7 +4,7 @@
class LoginPage():
def login_to_swag_labs(self, sb, username):
sb.open("https://www.saucedemo.com/v1")
sb.open("https://www.saucedemo.com")
sb.type("#user-name", username)
sb.type("#password", "secret_sauce")
sb.click('input[type="submit"]')
@ -15,4 +15,4 @@ class MyTests():
def test_swag_labs_login(self, sb):
LoginPage().login_to_swag_labs(sb, "standard_user")
sb.assert_element("#inventory_container")
sb.assert_text("Products", "div.product_label")
sb.assert_element('div:contains("Sauce Labs Backpack")')

View File

@ -6,7 +6,7 @@ from seleniumbase import BaseCase
class LoginPage():
def login_to_swag_labs(self, sb, username):
sb.open("https://www.saucedemo.com/v1")
sb.open("https://www.saucedemo.com")
sb.type("#user-name", username)
sb.type("#password", "secret_sauce")
sb.click('input[type="submit"]')
@ -17,4 +17,4 @@ class MyTests(BaseCase):
def test_swag_labs_login(self):
LoginPage().login_to_swag_labs(self, "standard_user")
self.assert_element("#inventory_container")
self.assert_text("Products", "div.product_label")
self.assert_element('div:contains("Sauce Labs Backpack")')

View File

@ -21,10 +21,7 @@ class SeleniumBaseGitHubPage():
link = '#readme article a[href*="seleniumbase.io"]'
sb.wait_for_element_visible(link)
sb.js_click(link)
sb.wait_for_ready_state_complete()
current_url = sb.get_current_url()
if "seleniumbase.io" not in current_url:
sb.switch_to_window(1) # GitHub probably opened a new window
sb.switch_to_newest_window()
class SeleniumBaseIOPage():

View File

@ -1,6 +1,6 @@
"""
This test demonstrates the use of encryption/decryption.
(Technically, obfuscation/unobfuscation.)
(Technically, obfuscation/unobfuscation of passwords.)
"""
from seleniumbase import BaseCase
@ -10,7 +10,7 @@ from seleniumbase import encryption
class DecryptionTests(BaseCase):
def test_decrypt_password(self):
self.open("https://www.saucedemo.com/v1")
self.open("https://www.saucedemo.com")
self.type("#user-name", "standard_user")
encrypted_password = "$^*ENCRYPT=S3BDTAdCWzMmKEY8Gjg=?&#$"
@ -20,5 +20,5 @@ class DecryptionTests(BaseCase):
self.type("#password", password)
self.click('input[type="submit"]')
self.assert_text("Products", "div.product_label")
self.assert_element("#inventory_container")
self.assert_element('div:contains("Sauce Labs Backpack")')

View File

@ -1,8 +1,10 @@
import pytest
from seleniumbase import BaseCase
class ImageTests(BaseCase):
@pytest.mark.run(order=1)
def test_pull_image_from_website(self):
""" Pull an image from a website and save it as a PNG file. """
self.open("https://xkcd.com/1117/")
@ -12,6 +14,7 @@ class ImageTests(BaseCase):
self.save_element_as_image_file(selector, file_name, folder)
print('"%s/%s" has been saved!' % (folder, file_name))
@pytest.mark.run(order=2)
def test_add_text_overlay_to_image(self):
""" Add a text overlay to an image. """
self.open("https://xkcd.com/1117/")
@ -23,6 +26,7 @@ class ImageTests(BaseCase):
selector, file_name, folder, overlay_text)
print('"%s/%s" has been saved!' % (folder, file_name))
@pytest.mark.run(order=3)
def test_add_text_overlay_to_page_section(self):
""" Add a text overlay to a section of a page. """
self.open("https://xkcd.com/2200/")
@ -38,6 +42,7 @@ class ImageTests(BaseCase):
selector, file_name, folder, overlay_text)
print('"%s/%s" has been saved!' % (folder, file_name))
@pytest.mark.run(order=4)
def test_add_text_overlay_to_full_page(self):
""" Add a text overlay to a full page. """
self.open("https://xkcd.com/1922/")

View File

@ -0,0 +1,15 @@
""" * Asserting that multiple elements are present or visible:
HTML Presence: assert_elements_present()
HTML Visibility: assert_elements() <> assert_elements_visible()
"""
from seleniumbase import BaseCase
class MyTestClass(BaseCase):
def test_assert_list_of_elements(self):
self.open("https://store.xkcd.com/collections/posters")
self.assert_elements_present("head", "style", "script")
self.assert_elements("h1", "h2", "h3")
my_list = ["#top-menu", "#col-main", "#col-widgets"]
self.assert_elements(my_list)

View File

@ -5,12 +5,20 @@ from parameterized import parameterized
class GoogleTests(BaseCase):
@parameterized.expand([
["pypi", "pypi.org"],
["wikipedia", "wikipedia.org"],
["seleniumbase", "seleniumbase/SeleniumBase"],
["PyPI", "pypi.org", 'img[alt="PyPI"]'],
["Wikipedia", "wikipedia.org", "div#p-logo"],
["SeleniumBase", "seleniumbase/SeleniumBase", 'img[title*="Selenium"]']
])
def test_parameterized_google_search(self, search_term, expected_text):
def test_parameterized_google_search(self, search_key, expected_text, img):
self.open('https://google.com/ncr')
self.type('input[title="Search"]', search_term + '\n')
self.type('input[title="Search"]', search_key + '\n')
self.assert_element('#result-stats')
self.assert_text(expected_text, '#search')
self.click('a:contains("%s")' % expected_text)
self.assert_element(img)
self.click(img)
if "Selenium" in img:
self.click('img[alt="SeleniumBase.io Docs"]')
self.assert_element('[title="SeleniumBase Docs"]')
self.click('a:contains("Features List")')
self.assert_text("Features List", "h1")

View File

@ -1,15 +1,12 @@
import pytest
from parameterized import parameterized
from seleniumbase import BaseCase
class SwagLabsTests(BaseCase):
def login_to_swag_labs(self, username="standard_user", v1=False):
def login_to_swag_labs(self, username="standard_user"):
""" Login to Swag Labs and verify success. """
url = "https://www.saucedemo.com"
if v1:
url += "/v1"
self.open(url)
if username not in self.get_text("#login_credentials"):
self.fail("Invalid user for login: %s" % username)
@ -17,18 +14,16 @@ class SwagLabsTests(BaseCase):
self.type("#password", "secret_sauce")
self.click('input[type="submit"]')
self.assert_element("#inventory_container")
if v1:
self.assert_text("Products", "div.product_label")
self.assert_element('div:contains("Sauce Labs Backpack")')
@parameterized.expand([
["standard_user"],
["problem_user"],
])
@pytest.mark.run(order=1)
def test_swag_labs_basic_flow(self, username):
""" This test checks functional flow of the Swag Labs store.
This test is parameterized on the login user. """
self.login_to_swag_labs(username=username, v1=True)
self.login_to_swag_labs(username=username)
if username == "problem_user":
print("\n(This test should fail)")
@ -49,60 +44,42 @@ class SwagLabsTests(BaseCase):
self.assert_exact_text("1", "span.shopping_cart_badge")
# Verify your cart
self.click("#shopping_cart_container path")
self.assert_exact_text("Your Cart", "div.subheader")
self.click("#shopping_cart_container")
self.assert_element('span:contains("Your Cart")')
self.assert_text(item_name, "div.inventory_item_name")
self.assert_exact_text("1", "div.cart_quantity")
self.assert_exact_text("REMOVE", "button.cart_button")
continue_shopping_button = "link=CONTINUE SHOPPING"
if self.browser == "safari":
# Safari sees this element differently
continue_shopping_button = "link=Continue Shopping"
self.assert_element(continue_shopping_button)
self.assert_element("button#continue-shopping")
# Checkout - Add info
self.click("link=CHECKOUT")
self.assert_text("Checkout: Your Information", "div.subheader")
self.assert_element("a.cart_cancel_link")
self.click("button#checkout")
self.assert_element('span:contains("Checkout: Your Information")')
self.assert_element("button#cancel")
self.type("#first-name", "SeleniumBase")
self.type("#last-name", "Rocks")
self.type("#postal-code", "01720")
# Checkout - Overview
self.click("input.btn_primary")
self.assert_text("Checkout: Overview", "div.subheader")
self.assert_element("link=CANCEL")
self.click("input#continue")
self.assert_element('span:contains("Checkout: Overview")')
self.assert_element("button#cancel")
self.assert_text(item_name, "div.inventory_item_name")
self.assert_text(item_price, "div.inventory_item_price")
self.assert_exact_text("1", "div.summary_quantity")
self.assert_exact_text("1", "div.cart_quantity")
# Finish Checkout and verify the item was removed from the cart
self.click("link=FINISH")
# Finish Checkout and verify that the cart is now empty
self.click("button#finish")
self.assert_exact_text("THANK YOU FOR YOUR ORDER", "h2")
self.assert_element("img.pony_express")
self.click("#shopping_cart_container path")
self.click("#shopping_cart_container")
self.assert_element_absent("div.inventory_item_name")
self.click(continue_shopping_button)
self.click("button#continue-shopping")
self.assert_element_absent("span.shopping_cart_badge")
@parameterized.expand([
["standard_user"],
["problem_user"],
])
@pytest.mark.run(order=2)
def test_swag_labs_products_page_links(self, username):
""" This test checks for 404s on the Swag Labs products page.
This test is parameterized on the login user. """
self.login_to_swag_labs(username=username, v1=True)
if username == "problem_user":
print("\n(This test should fail)")
self.assert_no_404_errors()
@parameterized.expand([
["standard_user"],
["problem_user"],
])
@pytest.mark.run(order=3)
def test_swag_labs_visual_regressions(self, username):
""" This test checks for visual regressions on the Swag Labs page.
This test is parameterized on the login user. """

View File

@ -0,0 +1,9 @@
from seleniumbase import BaseCase
class BrokenLinkTests(BaseCase):
def test_link_checking(self):
self.open("https://seleniumbase.io/other/broken_page.html")
print("\n(This test should fail)")
self.assert_no_404_errors()

View File

@ -13,13 +13,12 @@ class HackingTests(BaseCase):
self.assert_element('input[title="Search"]')
self.set_attribute('[action="/search"]', "action", "//bing.com/search")
self.set_attributes('[value="Google Search"]', "value", "Bing Search")
self.type('input[title="Search"]', "SeleniumBase GitHub.com")
self.type('input[title="Search"]', "SeleniumBase GitHub")
self.highlight('[value="Bing Search"]')
self.click('[value="Bing Search"]')
self.highlight("h1.b_logo")
self.highlight_click('a[href*="github.com/seleniumbase/SeleniumBase"]')
if self.browser == "firefox":
self.switch_to_window(1) # Firefox opens a new window
self.switch_to_newest_window()
self.assert_element('[href="/seleniumbase/SeleniumBase"]')
self.assert_true("seleniumbase/SeleniumBase" in self.get_current_url())
self.click('a[title="examples"]')

View File

@ -5,7 +5,7 @@ class SwagLabsLoginTests(BaseCase):
def login_to_swag_labs(self):
""" Login to Swag Labs and verify that login was successful. """
self.open("https://www.saucedemo.com/v1")
self.open("https://www.saucedemo.com")
self.type("#user-name", "standard_user")
self.type("#password", "secret_sauce")
self.click('input[type="submit"]')
@ -13,5 +13,5 @@ class SwagLabsLoginTests(BaseCase):
def test_swag_labs_login(self):
""" This test checks standard login for the Swag Labs store. """
self.login_to_swag_labs()
self.assert_element("div.header_label div.app_logo")
self.assert_text("Products", "div.product_label")
self.assert_element("#inventory_container")
self.assert_element('div:contains("Sauce Labs Backpack")')

View File

@ -5,14 +5,14 @@ class SwagLabsTests(BaseCase):
def login_to_swag_labs(self, username="standard_user"):
""" Login to Swag Labs and verify success. """
self.open("https://www.saucedemo.com/v1")
self.open("https://www.saucedemo.com")
if username not in self.get_text("#login_credentials"):
self.fail("Invalid user for login: %s" % username)
self.type("#user-name", username)
self.type("#password", "secret_sauce")
self.click('input[type="submit"]')
self.assert_element("#inventory_container")
self.assert_text("Products", "div.product_label")
self.assert_element('div:contains("Sauce Labs Backpack")')
def test_swag_labs_basic_flow(self):
""" This test checks functional flow of the Swag Labs store. """
@ -35,38 +35,34 @@ class SwagLabsTests(BaseCase):
self.assert_exact_text("1", "span.shopping_cart_badge")
# Verify your cart
self.click("#shopping_cart_container path")
self.assert_exact_text("Your Cart", "div.subheader")
self.click("#shopping_cart_container")
self.assert_element('span:contains("Your Cart")')
self.assert_text(item_name, "div.inventory_item_name")
self.assert_exact_text("1", "div.cart_quantity")
self.assert_exact_text("REMOVE", "button.cart_button")
continue_shopping_button = "link=CONTINUE SHOPPING"
if self.browser == "safari":
# Safari sees this element differently
continue_shopping_button = "link=Continue Shopping"
self.assert_element(continue_shopping_button)
self.assert_element("button#continue-shopping")
# Checkout - Add info
self.click("link=CHECKOUT")
self.assert_text("Checkout: Your Information", "div.subheader")
self.assert_element("a.cart_cancel_link")
self.click("button#checkout")
self.assert_element('span:contains("Checkout: Your Information")')
self.assert_element("button#cancel")
self.type("#first-name", "SeleniumBase")
self.type("#last-name", "Rocks")
self.type("#postal-code", "01720")
# Checkout - Overview
self.click("input.btn_primary")
self.assert_text("Checkout: Overview", "div.subheader")
self.assert_element("link=CANCEL")
self.click("input#continue")
self.assert_element('span:contains("Checkout: Overview")')
self.assert_element("button#cancel")
self.assert_text(item_name, "div.inventory_item_name")
self.assert_text(item_price, "div.inventory_item_price")
self.assert_exact_text("1", "div.summary_quantity")
self.assert_exact_text("1", "div.cart_quantity")
# Finish Checkout and verify item is no longer in cart
self.click("link=FINISH")
# Finish Checkout and verify that the cart is now empty
self.click("button#finish")
self.assert_exact_text("THANK YOU FOR YOUR ORDER", "h2")
self.assert_element("img.pony_express")
self.click("#shopping_cart_container path")
self.click("#shopping_cart_container")
self.assert_element_absent("div.inventory_item_name")
self.click(continue_shopping_button)
self.click("button#continue-shopping")
self.assert_element_absent("span.shopping_cart_badge")