Challenge - 5 Problems
Page Object Pro
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate2:00remaining
Output of a Selenium test using Page Object
What will be the output of this test run if the login page loads correctly and the username field is present?
Selenium Python
from selenium.webdriver.common.by import By from selenium.webdriver.remote.webdriver import WebDriver class LoginPage: def __init__(self, driver: WebDriver): self.driver = driver self.username_input = (By.ID, 'username') def is_username_displayed(self): return self.driver.find_element(*self.username_input).is_displayed() class TestLogin: def test_username_field(self, driver): page = LoginPage(driver) assert page.is_username_displayed() is True print('Test Passed')
Attempts:
2 left
💡 Hint
Think about what happens if the element is found and is visible.
✗ Incorrect
If the username input is found and visible, the assertion passes and 'Test Passed' is printed.
❓ locator
intermediate1:30remaining
Best locator strategy in Page Object
Which locator is the best practice to use in a Page Object for a login button with id 'loginBtn'?
Attempts:
2 left
💡 Hint
IDs are unique and fast to locate.
✗ Incorrect
Using By.ID is the fastest and most reliable locator if the element has a unique id.
❓ assertion
advanced1:30remaining
Correct assertion for page title in test class
Which assertion correctly verifies the page title is exactly 'Dashboard' in a Selenium test class?
Selenium Python
def test_page_title(self, driver): driver.get('https://example.com/dashboard')
Attempts:
2 left
💡 Hint
Use equality operator for exact match.
✗ Incorrect
Using '==' checks exact equality. 'is' checks identity and is incorrect here.
🔧 Debug
advanced2:00remaining
Identify error in test class using Page Object
What error will this test raise when run?
Selenium Python
from selenium.webdriver.common.by import By class LoginPage: def __init__(self, driver): self.driver = driver self.password_input = (By.ID, 'password') def enter_password(self, pwd): self.driver.find_element(self.password_input).send_keys(pwd) class TestLogin: def test_password_entry(self, driver): page = LoginPage(driver) page.enter_password('secret')
Attempts:
2 left
💡 Hint
Check how find_element is called with tuple argument.
✗ Incorrect
find_element expects two arguments: locator strategy and locator value, but a single tuple was passed.
❓ framework
expert3:00remaining
Test class setup and teardown with Page Object
Which test class structure correctly uses setup and teardown methods with a Page Object in pytest style?
Attempts:
2 left
💡 Hint
pytest uses setup_method and teardown_method for per-test setup/teardown.
✗ Incorrect
In pytest, setup_method and teardown_method are the correct names for setup and teardown per test method. unittest uses setUp and tearDown.