首页 > 解决方案 > 为什么我的 selenium chromedriver 不显示下拉菜单?

问题描述

我在 Python 中将 Selenium webdriver 与 Chrome 一起使用。我初始化驱动程序如下:

import os
from selenium import webdriver

driver = webdriver.Chrome(os.path.join(os.path.abspath(os.getcwd()), 'chromedriver'))

driver.get("https://www.macys.com")

然后,我尝试显示左上角的“按部门购买”菜单。我首先尝试将鼠标悬停在菜单上。在普通的 Chrome 中,这可以工作,但在 Selenium 打开的浏览器中,菜单不显示。

图像显示按部门菜单关闭的商店

然后我尝试通过代码悬停:

from selenium.webdriver.common.action_chains import ActionChains

menu = driver.find_elements_by_class_name("redesign-header-radical-category-dropdown")[0]
ActionChains(driver).move_to_element(menu).perform()

仍然,菜单没有显示。我究竟做错了什么?

一件奇怪的事情 - 我可以在右上角看到购物袋的下拉菜单。 显示购物袋的图片

标签: python-3.xseleniumselenium-webdriverselenium-chromedriver

解决方案


我猜你错过了等待。
我还看到您build()在构建 Actions 操作时缺少。
尝试这个:

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, 20)
menu = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, '.redesign-header-radical-category-dropdown')))
ActionChains(driver).move_to_element(menu).build().perform()

推荐阅读