0
0
Selenium Pythontesting~20 mins

Mouse hover (move_to_element) in Selenium Python - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Mouse Hover 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 Python code snippet?
Consider the following Selenium Python code that performs a mouse hover action. What will be printed after execution?
Selenium Python
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By

class DummyElement:
    def __init__(self):
        self.hovered = False
    def get_attribute(self, attr):
        if attr == 'class':
            return 'hovered' if self.hovered else 'not-hovered'

# Simulate hover effect by setting hovered to True

def hover_element(element):
    element.hovered = True

# Test code

element = DummyElement()
actions = ActionChains(None)  # driver is None for simulation
hover_element(element)
print(element.get_attribute('class'))
AAttributeError
Bnot-hovered
CNone
Dhovered
Attempts:
2 left
💡 Hint
Think about what happens to the element's state after the hover_element function is called.
assertion
intermediate
2:00remaining
Which assertion correctly verifies the hover effect on a web element?
You want to check if a web element has the CSS class 'active' after a mouse hover. Which assertion is correct?
Selenium Python
element = driver.find_element(By.ID, 'menu-item')
actions = ActionChains(driver)
actions.move_to_element(element).perform()

# Assertion options:
Aassert element.is_displayed() == 'active'
Bassert element.text == 'active'
Cassert 'active' in element.get_attribute('class')
Dassert element.get_attribute('id') == 'active'
Attempts:
2 left
💡 Hint
Check the element's class attribute after hover.
locator
advanced
2:00remaining
Which locator is best to find a menu item that appears only after mouse hover?
A submenu item appears only after hovering over a main menu. Which locator strategy is best to find this submenu item reliably?
ABy.XPATH, '//ul[@class="submenu" and contains(@style, "display: block")]//li[1]'
BBy.ID, 'submenu-item'
CBy.CSS_SELECTOR, 'ul.submenu > li.visible'
DBy.CLASS_NAME, 'submenu-item'
Attempts:
2 left
💡 Hint
Consider that the submenu is only visible after hover and may have a style change.
🔧 Debug
advanced
2:00remaining
Why does this mouse hover test fail to reveal the submenu?
This Selenium Python code tries to hover over a menu but the submenu does not appear. What is the likely cause?
Selenium Python
menu = driver.find_element(By.ID, 'menu')
actions = ActionChains(driver)
actions.move_to_element(menu)
# Missing perform()
submenu = driver.find_element(By.ID, 'submenu')
assert submenu.is_displayed()
AThe perform() method is missing after move_to_element, so hover is not executed
BThe submenu element does not exist in the DOM
CThe menu locator is incorrect
DThe assert statement is wrong syntax
Attempts:
2 left
💡 Hint
Check if the action chain is actually executed.
framework
expert
3:00remaining
How to implement a reliable mouse hover test with explicit wait in Selenium Python?
You want to hover over a menu and wait until the submenu is visible before asserting. Which code snippet correctly implements this?
Selenium Python
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains

menu = driver.find_element(By.ID, 'menu')
actions = ActionChains(driver)

# Choose the correct code to hover and wait for submenu:
A
actions.click(menu).perform()
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, 'submenu')))
assert driver.find_element(By.ID, 'submenu').is_displayed()
B
actions.move_to_element(menu).perform()
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, 'submenu')))
assert driver.find_element(By.ID, 'submenu').is_displayed()
C
actions.move_to_element(menu)
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, 'submenu')))
assert driver.find_element(By.ID, 'submenu').is_displayed()
D
actions.move_to_element(menu).perform()
time.sleep(10)
assert driver.find_element(By.ID, 'submenu').is_displayed()
Attempts:
2 left
💡 Hint
Remember to perform the hover and use explicit wait for visibility.