【问题标题】:Why isn't my selenium chromedriver showing a dropdown menu?为什么我的 selenium chromedriver 不显示下拉菜单?
【发布时间】:2021-06-23 15:10:49
【问题描述】:

我在 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()

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

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

【问题讨论】:

  • 看起来它在自动化窗口中被冻结了,我用 chrome 和 firefox 都试过了,它们都不起作用
  • selenium 需要能够在页面上看到它。所以你必须点击它并等待元素出现。

标签: python-3.x selenium selenium-webdriver selenium-chromedriver


【解决方案1】:

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

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()

【讨论】:

  • 不,构建不是强制性的,它执行的是从队列中触发的事件,这些事件存储在动作链中。
  • 也许,我不会争论。但是等待看起来是问题的一个原因。
  • 没有看起来是应用程序问题,我尝试使用 FF、chrome.. 都没有用
  • 试过了,行为没有改变。还有其他想法吗?
  • 如果自动浏览器发生应用程序方面的问题,因为 Cruisepandey 说我不得不调试它,但我不能这样做,我很抱歉。跨度>
猜你喜欢
  • 1970-01-01
  • 2021-12-21
  • 1970-01-01
  • 1970-01-01
  • 2012-05-27
  • 2022-01-01
  • 1970-01-01
  • 2013-08-12
相关资源
最近更新 更多