我的目标是在下拉菜单中获得一个元素,需要单击该元素才能使用python selenium显示。此外,似乎在点击之前,悬停是必要的。我试着按一下下拉菜单如下:
element = wait().until(EC.presence_of_element_located((By.CLASS_NAME, "c-topmenu c-topmenu--create c-topmenu--userbar tw-inline-flex")))
element.click()def wait():
return WebDriverWait(driver, 30)并试图使用悬停:
Hover = ActionChains(driver).move_to_element(element)
Hover.click().build().perform()尽管如此,我还是得到了一个TimeoutException,无法找到解决方案。
在单击下拉菜单之前,网站komoot如下所示:

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

发布于 2021-08-01 12:31:28
您使用了错误的定位器。
如果有多个类名,则应该使用css_selector或XPath,而不是类名。
此外,在这里您有一个惟一的属性data-test-id,您应该使用它。
此外,您应该等待元素的可见性或可点击性,而不仅仅是元素的存在。
所以你的代码可能是:
element = wait().until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div[data-test-id='more_menu']")))发布于 2021-08-01 12:44:25
好的,这就是我是如何做到这一点的。
登录后,我从链接中获取包装器元素,内容如下:
more_menu_wrapper = driver.find_element_by_css_selector("div[data-test-id='more_menu']")之后,我可以用以下方法单击所需的元素:
more_menu_wrapper.find_element_by_tag_name("a").click()https://stackoverflow.com/questions/68610401
复制相似问题