gpt4 book ai didi

javascript - Python 和 Selenium : What's a good way to access links hidden in dropdown menus built by Javascript?

转载 作者:行者123 更新时间:2023-12-02 18:36:40 25 4
gpt4 key购买 nike

我正在使用 Selenium 在 Python 中构建一个网络爬虫。下面是搜索链接的函数。除了注释掉的部分之外,它工作得很好。这个想法是将鼠标悬停在正在检查的页面上找到的每个链接上,如果该悬停操作显示更多链接(例如,在使用 Javascript 构建的下拉菜单中),则使用对 getLinksFromHTML 的递归调用来添加这些链接( “if code != 1”部分只是为了确保只有一个递归调用)。

但是,当我在 JS 下拉菜单中有链接的页面(我正在查看的页面是 http://wilmingtontaxesandaccounting.com )上进行测试时,递归调用不会拾取任何新链接。所有可见的链接都可以正常获取。

我该怎么做才能让 Selenium 看到这些下 zipper 接?我需要一个通用的解决方案,即没有特定的元素 ID 或任何其他特定于页面的编码到代码中。感谢您的阅读!

def getLinksFromHTML(currUrl, code):

ListlinkerHref = browser.find_elements_by_xpath("//*[@href]")
links1 = []
links2 = []

for link in ListlinkerHref:
url = link.get_attribute("href")

#hov = ActionChains(browser).move_to_element(link)
#hov.perform()
#if code != 1:
#links1 = self.getLinksFromHTML(currUrl, 1)

if url not in links1:
links2.append(url)

return links1 + links2

最佳答案

事实证明它不起作用的原因是我使用了 Firefox 驱动程序。显然,对于 Firefox,move_to_element 实际上并不悬停在元素上,它只是“聚焦”在那里。当我切换到 Chrome 驱动程序时,它实际上悬停在菜单项上并显示子菜单。 (请注意,实际函数中有一些错误,但这不是这个问题的重点。)

TL;DR:如果您使用 Selenium Webdriver 并且希望将鼠标悬停在链接上以显示子菜单等内容,请使用 Chrome 而不是 Firefox。

关于javascript - Python 和 Selenium : What's a good way to access links hidden in dropdown menus built by Javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17256415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com