Bird
Raised Fist0
Selenium Pythontesting~10 mins

Expected conditions in Selenium Python - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to wait until the element with id 'submit' is clickable.

Selenium Python
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

wait = WebDriverWait(driver, 10)
wait.until(EC.[1]((By.ID, 'submit')))
Drag options to blanks, or click blank then click option'
Aelement_to_be_clickable
Bpresence_of_element_located
Calert_is_present
Dvisibility_of_element_located
Attempts:
3 left
💡 Hint
Common Mistakes
Using presence_of_element_located which only checks if element is in DOM, not clickable.
Using alert_is_present which waits for alerts, not elements.
2fill in blank
medium

Complete the code to wait until the page title contains the word 'Dashboard'.

Selenium Python
wait = WebDriverWait(driver, 15)
wait.until(EC.[1]('Dashboard'))
Drag options to blanks, or click blank then click option'
Atitle_matches
Btitle_is
Ctitle_contains
Dtitle_starts_with
Attempts:
3 left
💡 Hint
Common Mistakes
Using title_is which requires exact match of the title.
Using title_matches which is not a standard expected condition.
3fill in blank
hard

Fix the error in the code to wait until an alert is present.

Selenium Python
wait = WebDriverWait(driver, 5)
alert = wait.until(EC.[1]())
Drag options to blanks, or click blank then click option'
Aalert_is_present
Balert_wait
Cpresence_of_alert
Dalert_present
Attempts:
3 left
💡 Hint
Common Mistakes
Using non-existent conditions like alert_present or presence_of_alert.
Forgetting to call the condition as a function.
4fill in blank
hard

Fill both blanks to wait until the element with class 'loading' is invisible.

Selenium Python
wait = WebDriverWait(driver, 20)
wait.until(EC.[1]((By.[2], 'loading')))
Drag options to blanks, or click blank then click option'
Ainvisibility_of_element_located
BID
CCLASS_NAME
DCSS_SELECTOR
Attempts:
3 left
💡 Hint
Common Mistakes
Using visibility_of_element_located instead of invisibility.
Using ID locator for a class name.
5fill in blank
hard

Fill all three blanks to create a dictionary comprehension that maps element text to its attribute 'href' for all links visible on the page.

Selenium Python
links = driver.find_elements(By.TAG_NAME, 'a')
link_dict = { [1]: [2] for [3] in links if EC.visibility_of([3])(driver) }
Drag options to blanks, or click blank then click option'
Alink.text
Blink.get_attribute('href')
Clink
Delement
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong variable names inconsistent in comprehension.
Not calling get_attribute correctly.
Not filtering visible elements.

Practice

(1/5)
1. What is the main purpose of using ExpectedConditions in Selenium WebDriver?
easy
A. To wait for certain conditions before interacting with elements
B. To speed up the test execution by skipping waits
C. To generate random test data automatically
D. To take screenshots during test execution

Solution

  1. Step 1: Understand ExpectedConditions role

    ExpectedConditions help Selenium wait for specific states like element visibility or clickability before proceeding.
  2. Step 2: Identify the main purpose

    This waiting avoids errors caused by trying to interact with elements not yet ready on the page.
  3. Final Answer:

    To wait for certain conditions before interacting with elements -> Option A
  4. Quick Check:

    ExpectedConditions = Wait for conditions [OK]
Hint: ExpectedConditions = smart waits before actions [OK]
Common Mistakes:
  • Thinking ExpectedConditions speed up tests by skipping waits
  • Confusing ExpectedConditions with data generation
  • Assuming ExpectedConditions take screenshots
2. Which of the following is the correct syntax to wait until an element located by ID 'submit' is clickable using Selenium's ExpectedConditions in Python?
easy
A. WebDriverWait(driver, 10).until(EC.visibility_of_element_located('submit'))
B. WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, 'submit')))
C. WebDriverWait(driver, 10).until(EC.element_to_be_clickable('submit'))
D. WebDriverWait(driver, 10).until(EC.presence_of_element_located(By.ID, 'submit'))

Solution

  1. Step 1: Check correct ExpectedCondition usage

    element_to_be_clickable requires a locator tuple like (By.ID, 'submit').
  2. Step 2: Verify syntax correctness

    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, 'submit'))) correctly uses a tuple inside the condition and waits properly.
  3. Final Answer:

    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, 'submit'))) -> Option B
  4. Quick Check:

    Use tuple locator with element_to_be_clickable [OK]
Hint: Use (By.ID, 'id') tuple inside ExpectedConditions [OK]
Common Mistakes:
  • Passing string instead of locator tuple
  • Using visibility_of_element_located instead of clickable
  • Missing parentheses around locator tuple
3. What will be the output of the following code snippet if the element with ID 'login' becomes visible after 5 seconds?
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(driver, 10)
element = wait.until(EC.visibility_of_element_located((By.ID, 'login')))
print(element.is_displayed())
medium
A. TimeoutException
B. False
C. True
D. NoSuchElementException

Solution

  1. Step 1: Analyze wait duration and element visibility

    The wait is 10 seconds, and the element appears after 5 seconds, so wait.until succeeds.
  2. Step 2: Understand is_displayed() output

    Since the element is visible, element.is_displayed() returns True, which is printed.
  3. Final Answer:

    True -> Option C
  4. Quick Check:

    Element visible within wait = True output [OK]
Hint: If element appears before timeout, is_displayed() is True [OK]
Common Mistakes:
  • Expecting TimeoutException though element appears in time
  • Confusing is_displayed() with presence only
  • Assuming False if element appears late but within wait
4. Identify the error in the following code that waits for an element with class name 'btn' to be clickable:
wait = WebDriverWait(driver, 5)
wait.until(EC.element_to_be_clickable(By.CLASS_NAME, 'btn'))
medium
A. Timeout value too low
B. Incorrect import of WebDriverWait
C. Using CLASS_NAME instead of CSS_SELECTOR
D. Missing tuple around locator in element_to_be_clickable

Solution

  1. Step 1: Check element_to_be_clickable parameter

    It requires a single locator tuple like (By.CLASS_NAME, 'btn'), not two separate arguments.
  2. Step 2: Identify syntax error

    Code passes two arguments instead of one tuple, causing a TypeError.
  3. Final Answer:

    Missing tuple around locator in element_to_be_clickable -> Option D
  4. Quick Check:

    Locator must be a tuple inside ExpectedConditions [OK]
Hint: Always wrap locator in a tuple for ExpectedConditions [OK]
Common Mistakes:
  • Passing locator arguments separately instead of tuple
  • Assuming timeout value causes error here
  • Confusing locator types (CLASS_NAME vs CSS_SELECTOR)
5. You want to wait until the URL contains the word 'dashboard' before proceeding. Which code snippet correctly uses ExpectedConditions to achieve this in Python Selenium?
hard
A. WebDriverWait(driver, 15).until(EC.url_contains('dashboard'))
B. WebDriverWait(driver, 15).until(EC.url_to_be('dashboard'))
C. WebDriverWait(driver, 15).until(EC.url_matches('dashboard'))
D. WebDriverWait(driver, 15).until(EC.url_is('dashboard'))

Solution

  1. Step 1: Identify correct ExpectedCondition for URL substring

    EC.url_contains waits until the URL contains the given substring.
  2. Step 2: Verify other options

    url_matches requires a regex pattern to match the entire URL, url_to_be checks for exact URL equality, and url_is is not a valid ExpectedCondition.
  3. Final Answer:

    WebDriverWait(driver, 15).until(EC.url_contains('dashboard')) -> Option A
  4. Quick Check:

    Use url_contains for substring in URL [OK]
Hint: Use EC.url_contains for partial URL waits [OK]
Common Mistakes:
  • Using non-existent ExpectedConditions like url_is
  • Confusing url_contains with exact match conditions like url_to_be
  • Using url_matches without proper regex for substring
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard