首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在带有硒的科莫特上悬停并展开下拉菜单?

如何在带有硒的科莫特上悬停并展开下拉菜单?
EN

Stack Overflow用户
提问于 2021-08-01 12:25:44
回答 2查看 188关注 0票数 1

我的目标是在下拉菜单中获得一个元素,需要单击该元素才能使用python selenium显示。此外,似乎在点击之前,悬停是必要的。我试着按一下下拉菜单如下:

代码语言:javascript
复制
element = wait().until(EC.presence_of_element_located((By.CLASS_NAME, "c-topmenu c-topmenu--create c-topmenu--userbar tw-inline-flex")))
element.click()
代码语言:javascript
复制
def wait():
    return WebDriverWait(driver, 30)

并试图使用悬停:

代码语言:javascript
复制
Hover = ActionChains(driver).move_to_element(element)
Hover.click().build().perform()

尽管如此,我还是得到了一个TimeoutException,无法找到解决方案。

在单击下拉菜单之前,网站komoot如下所示:

komoot网站在扩展后看起来是这样的:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-01 12:31:28

您使用了错误的定位器。

如果有多个类名,则应该使用css_selector或XPath,而不是类名。

此外,在这里您有一个惟一的属性data-test-id,您应该使用它。

此外,您应该等待元素的可见性或可点击性,而不仅仅是元素的存在。

所以你的代码可能是:

代码语言:javascript
复制
element = wait().until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div[data-test-id='more_menu']")))
票数 0
EN

Stack Overflow用户

发布于 2021-08-01 12:44:25

好的,这就是我是如何做到这一点的。

登录后,我从链接中获取包装器元素,内容如下:

代码语言:javascript
复制
more_menu_wrapper = driver.find_element_by_css_selector("div[data-test-id='more_menu']")

之后,我可以用以下方法单击所需的元素:

代码语言:javascript
复制
more_menu_wrapper.find_element_by_tag_name("a").click()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68610401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档