0
0
Selenium Pythontesting~20 mins

Action chains in Selenium Python - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Action Chains Mastery
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 ActionChains code?
Consider the following Selenium Python code snippet using ActionChains. What will be printed after execution?
Selenium Python
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.remote.webelement import WebElement

class DummyDriver:
    def __init__(self):
        self.actions = []
    def find_element(self, by, value):
        return WebElement(None, 'dummy')

class DummyActionChains(ActionChains):
    def __init__(self, driver):
        super().__init__(driver)
        self.actions = []
    def click(self, on_element=None):
        self.actions.append(f"click on {on_element}")
        return self
    def move_to_element(self, to_element):
        self.actions.append(f"move to {to_element}")
        return self
    def perform(self):
        print(self.actions)

# Using dummy classes to simulate

driver = DummyDriver()
actions = DummyActionChains(driver)
element1 = driver.find_element(By.ID, "btn1")
element2 = driver.find_element(By.ID, "btn2")

actions.move_to_element(element1).click().move_to_element(element2).click().perform()
A["move to <selenium.webdriver.remote.webelement.WebElement object at ...>", "click on None", "move to <selenium.webdriver.remote.webelement.WebElement object at ...>", "click on <selenium.webdriver.remote.webelement.WebElement object at ...>"]
B["move to <selenium.webdriver.remote.webelement.WebElement object at ...>", "click on <selenium.webdriver.remote.webelement.WebElement object at ...>", "move to <selenium.webdriver.remote.webelement.WebElement object at ...>", "click on None"]
C["move to <selenium.webdriver.remote.webelement.WebElement object at ...>", "click on <selenium.webdriver.remote.webelement.WebElement object at ...>", "move to <selenium.webdriver.remote.webelement.WebElement object at ...>", "click on <selenium.webdriver.remote.webelement.WebElement object at ...>"]
D["move to <selenium.webdriver.remote.webelement.WebElement object at ...>", "click on None", "move to <selenium.webdriver.remote.webelement.WebElement object at ...>", "click on None"]
Attempts:
2 left
💡 Hint
Look carefully at how the click() method is called without arguments after move_to_element().
assertion
intermediate
1:30remaining
Which assertion correctly verifies a double-click action was performed?
You have a Selenium test that performs a double-click on an element using ActionChains. Which assertion correctly verifies that the double-click was performed by checking the element's text changed to 'Double Clicked'?
Selenium Python
from selenium.webdriver.common.by import By
from selenium.webdriver import ActionChains

# Assume driver and element are already defined

actions = ActionChains(driver)
actions.double_click(element).perform()

# Now verify the text changed
actual_text = element.text
Aassert actual_text == 'Double Clicked'
Bassert actual_text != 'Double Clicked'
Cassert 'Double Clicked' in actual_text
Dassert actual_text is None
Attempts:
2 left
💡 Hint
The test expects the text to exactly match 'Double Clicked' after the action.
🔧 Debug
advanced
2:00remaining
Why does this ActionChains drag_and_drop code fail to move the element?
This Selenium Python code attempts to drag an element to a target but the element does not move. What is the most likely reason?
Selenium Python
from selenium.webdriver import ActionChains

source = driver.find_element(By.ID, 'source')
target = driver.find_element(By.ID, 'target')
actions = ActionChains(driver)
actions.drag_and_drop(source, target)
# Missing perform call here
AThe source element is not visible on the page
BThe target element is disabled and cannot receive drops
CThe perform() method was not called to execute the action chain
DThe drag_and_drop method requires an offset argument
Attempts:
2 left
💡 Hint
ActionChains methods build the action but do not execute until perform() is called.
locator
advanced
1:30remaining
Which locator strategy is best for stable ActionChains interaction?
You want to use ActionChains to hover over a menu item that may change position but has a unique visible text 'Settings'. Which locator is best to find this element reliably?
ABy.CLASS_NAME, "menu-item"
BBy.XPATH, "//li[text()='Settings']"
CBy.ID, "menu-item-3"
DBy.CSS_SELECTOR, "li:nth-child(3)"
Attempts:
2 left
💡 Hint
Choose a locator that depends on visible text, not position or class that may be shared.
framework
expert
2:30remaining
How to best integrate ActionChains in a pytest Selenium test for reusability?
You want to write reusable pytest fixtures and helper functions to perform common ActionChains like hover and drag-and-drop. Which approach is best practice?
ACreate pytest fixtures that return ActionChains instances and helper functions that accept driver and elements to perform actions, then call perform() inside helpers
BWrite all ActionChains code directly inside each test function without helpers or fixtures
CUse global variables to store ActionChains objects and reuse them across tests without reinitializing
DCreate a base test class with static methods for ActionChains and inherit it in all test classes
Attempts:
2 left
💡 Hint
Think about modularity, reusability, and pytest best practices.