python-3.x - 为什么我的 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()
仍然,菜单没有显示。我究竟做错了什么?
解决方案
我猜你错过了等待。
我还看到您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()
推荐阅读
- python - 使用美丽的汤进行网页抓取
- java - 在同一个项目中使用 Java 和 Kotlin 活动
- python - Python 为什么 .lower() 不永久应用于我的其余代码?
- django - 从表单中的必填字段标签中删除 (* char)
- r - R代码将shiny.tag.list保存为html作为查看器->导出->另存为网页按钮
- android - 我已将 Channel 添加到 NotificationManager 和 Builder,但点击通知时我的 Activity 仍未打开
- multithreading - 是否有并发搜索的模式?
- pandas - 将单行复制到现有数据框
- python - 使用 tensorflow 2 实现梯度惩罚损失
- c++ - 如何在 Visual Studio 代码中使用调试器?