Test Overview
This test uses Selenium's ActionChains to hover over a menu item and then click a submenu item. It verifies that the submenu item is clickable and the click action works.
This test uses Selenium's ActionChains to hover over a menu item and then click a submenu item. It verifies that the submenu item is clickable and the click action works.
from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import unittest class TestActionChains(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome() self.driver.get('https://example.com/menu') self.wait = WebDriverWait(self.driver, 10) def test_hover_and_click_submenu(self): driver = self.driver wait = self.wait menu = wait.until(EC.presence_of_element_located((By.ID, 'menu-item'))) submenu = wait.until(EC.element_to_be_clickable((By.ID, 'submenu-item'))) actions = ActionChains(driver) actions.move_to_element(menu).click(submenu).perform() # Verify submenu item was clicked by checking URL or page element wait.until(EC.url_contains('submenu-page')) self.assertIn('submenu-page', driver.current_url) def tearDown(self): self.driver.quit() if __name__ == '__main__': unittest.main()
| Step | Action | System State | Assertion | Result |
|---|---|---|---|---|
| 1 | Test starts and Chrome browser opens | Browser opened at 'https://example.com/menu' showing main menu page | - | PASS |
| 2 | Wait until menu item with ID 'menu-item' is present | Menu item is visible on the page | Element with ID 'menu-item' is present | PASS |
| 3 | Wait until submenu item with ID 'submenu-item' is present | Submenu item is present but not visible until hover | Element with ID 'submenu-item' is present | PASS |
| 4 | Create ActionChains and move mouse to menu item, then click submenu item | Mouse hovered over menu item, submenu item becomes visible and is clicked | - | PASS |
| 5 | Wait until URL contains 'submenu-page' after clicking submenu | Browser navigated to submenu page URL | Current URL contains 'submenu-page' | PASS |
| 6 | Test ends and browser closes | Browser closed | - | PASS |