Bird
Raised Fist0
Selenium Pythontesting~20 mins

Drag and drop in Selenium Python - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Drag and Drop Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this Selenium drag and drop code?
Consider the following Selenium Python code snippet that performs a drag and drop action. What will be printed after execution?
Selenium Python
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

# Assume driver is already initialized and navigated to the page
source = driver.find_element('id', 'drag-source')
target = driver.find_element('id', 'drop-target')
actions = ActionChains(driver)
actions.drag_and_drop(source, target).perform()
print('Drag and drop performed')
ATypeError because drag_and_drop requires different arguments
BNo output, code raises NoSuchElementException
CSyntaxError due to wrong method usage
DDrag and drop performed
Attempts:
2 left
💡 Hint
Check if the method drag_and_drop is used correctly with source and target elements.
❓ locator
intermediate
1:30remaining
Which locator is best for identifying a draggable element?
You want to locate a draggable element on a web page for drag and drop testing. Which locator strategy is best practice?
Adriver.find_element('css selector', '#draggable')
Bdriver.find_element('xpath', '//*[@class="draggable"]')
Cdriver.find_element('tag name', 'div')
Ddriver.find_element('link text', 'Drag me')
Attempts:
2 left
💡 Hint
Use the most specific and stable locator possible.
❓ assertion
advanced
1:30remaining
Which assertion correctly verifies a successful drop?
After performing drag and drop, you want to assert that the drop target contains the text 'Dropped!'. Which assertion is correct?
Selenium Python
drop_target = driver.find_element('id', 'drop-target')
drop_text = drop_target.text
Aassert drop_text == 'Dropped!'
Bassert drop_text.contains('Dropped!')
Cassert drop_text.equals('Dropped!')
Dassert drop_text in 'Dropped!'
Attempts:
2 left
💡 Hint
Check Python string methods and assertion syntax.
🔧 Debug
advanced
2:00remaining
Why does this drag and drop code raise an error?
This Selenium Python code raises an error. Identify the cause.
Selenium Python
actions = ActionChains(driver)
actions.drag_and_drop('source', 'target').perform()
AActionChains requires a context manager to work
Bperform() must be called before drag_and_drop
CThe arguments to drag_and_drop must be WebElement objects, not strings
Ddrag_and_drop method is deprecated and removed
Attempts:
2 left
💡 Hint
Check the types of arguments passed to drag_and_drop.
❓ framework
expert
2:30remaining
Which test framework feature best supports drag and drop tests?
You want to write maintainable drag and drop tests in Selenium Python. Which framework feature helps most?
AUsing unittest's setUpClass to run drag and drop once
BPage Object Model to separate element locators and actions
CUsing pytest fixtures to skip drag and drop tests conditionally
DUsing raw Selenium calls in test methods without abstraction
Attempts:
2 left
💡 Hint
Think about organizing code for readability and reuse.

Practice

(1/5)
1. What is the main purpose of using drag and drop in Selenium testing?
easy
A. To verify page title correctness
B. To check if a button is clickable
C. To input text into a form field
D. To simulate moving an element from one place to another on a webpage

Solution

  1. Step 1: Understand drag and drop action

    Drag and drop simulates the user moving an element by mouse from one location to another on the webpage.
  2. Step 2: Identify the purpose in Selenium

    Selenium uses drag and drop to test this user interaction, not for clicking buttons or inputting text.
  3. Final Answer:

    To simulate moving an element from one place to another on a webpage -> Option D
  4. Quick Check:

    Drag and drop = move element [OK]
Hint: Drag and drop means moving elements with mouse [OK]
Common Mistakes:
  • Confusing drag and drop with clicking
  • Thinking drag and drop inputs text
  • Assuming drag and drop checks page title
2. Which of the following is the correct way to perform drag and drop using Selenium's ActionChains in Python?
easy
A. actions.dragdrop(source, target).perform()
B. actions.dragdrop(source, target).execute()
C. actions.drag_and_drop(source, target).perform()
D. actions.drag_and_drop(source, target).execute()

Solution

  1. Step 1: Recall correct method name and usage

    The correct method in Selenium's ActionChains is drag_and_drop(source, target) followed by perform() to execute.
  2. Step 2: Check method chaining and spelling

    Options with dragdrop or execute() are incorrect because method names and chaining are wrong.
  3. Final Answer:

    actions.drag_and_drop(source, target).perform() -> Option C
  4. Quick Check:

    Correct method = drag_and_drop + perform() [OK]
Hint: Use drag_and_drop() then perform() to execute [OK]
Common Mistakes:
  • Using dragdrop instead of drag_and_drop
  • Calling execute() instead of perform()
  • Misspelling method names
3. Given the following code snippet, what will be the output if the drag and drop is successful?
from selenium.webdriver import ActionChains
actions = ActionChains(driver)
actions.drag_and_drop(source_element, target_element).perform()
result_text = driver.find_element(By.ID, 'result').text
print(result_text)

Assuming the page updates the text to 'Dropped!' after a successful drop.
medium
A. 'Dropped!'
B. 'Drag failed'
C. Empty string
D. Throws NoSuchElementException

Solution

  1. Step 1: Understand the code flow

    The code performs drag and drop, then reads text from element with ID 'result'.
  2. Step 2: Interpret expected page behavior

    If drag and drop is successful, the page updates 'result' text to 'Dropped!'. So print outputs 'Dropped!'.
  3. Final Answer:

    'Dropped!' -> Option A
  4. Quick Check:

    Successful drop updates text = 'Dropped!' [OK]
Hint: Check page text after drag to confirm success [OK]
Common Mistakes:
  • Assuming drag_and_drop returns a value
  • Expecting exceptions without checking element presence
  • Ignoring page text update after drop
4. You wrote this code to drag and drop but it fails silently (no error, no effect):
actions = ActionChains(driver)
actions.click_and_hold(source).move_to_element(target).release().perform()

What is the most likely reason for failure?
medium
A. The source or target elements are not interactable or visible
B. You forgot to import ActionChains
C. The perform() method is missing
D. The driver is not initialized

Solution

  1. Step 1: Analyze the drag and drop steps

    The code uses click_and_hold, move_to_element, release, and perform correctly.
  2. Step 2: Identify common silent failure cause

    If no error but no effect, often source or target elements are hidden, disabled, or not interactable.
  3. Final Answer:

    The source or target elements are not interactable or visible -> Option A
  4. Quick Check:

    Invisible elements cause silent drag failure [OK]
Hint: Check element visibility and interactability first [OK]
Common Mistakes:
  • Assuming missing perform() causes silent failure
  • Ignoring element visibility issues
  • Forgetting to import ActionChains causes errors, not silent failure
5. You want to test a drag and drop feature where the target area only accepts drops if the dragged element has a specific CSS class 'draggable'. Which approach correctly verifies this behavior in Selenium Python?
hard
A. Drag any element and check if the page URL changes
B. Drag the element with 'draggable' class and assert the target's text changes; drag element without class and assert no change
C. Only check if drag_and_drop() method runs without error
D. Use JavaScript to forcibly move the element without checking CSS classes

Solution

  1. Step 1: Understand the acceptance condition

    The target accepts drops only if the dragged element has 'draggable' class, so test both cases.
  2. Step 2: Verify behavior by asserting page changes

    Drag element with class and check target text changes; drag element without class and check no change to confirm correct behavior.
  3. Final Answer:

    Drag the element with 'draggable' class and assert the target's text changes; drag element without class and assert no change -> Option B
  4. Quick Check:

    Test both valid and invalid drag cases [OK]
Hint: Test drag with and without class, check target changes [OK]
Common Mistakes:
  • Ignoring negative test case without class
  • Assuming method success means feature works
  • Using JavaScript to bypass UI logic
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