- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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/
我是一名优秀的程序员,十分优秀!