【发布时间】:2015-01-12 21:54:50
【问题描述】:
我正在使用 selenium 在某个页面上加载的超链接上执行点击功能。该脚本适用于谷歌浏览器,但不适用于 phantomjs。为什么这不起作用?
from selenium import webdriver
driver = webdriver.Chrome()
#driver = webdriver.PhantomJS(executable_path = "/Users/jameslemieux/PythonProjects/phantomjs-1.9.8-macosx/bin/phantomjs")
driver.get("http://www.youtube-mp3.org/?e=t_exp&r=true#v=hC-T0rC6m7I")
elem = driver.find_element_by_link_text('Download')
elem.click()
driver.save_screenshot('/Users/jameslemieux/Desktop/Misc./test_image.png')
driver.quit()
这适用于 chrome,但它总是会打开一个新的 chrome 窗口来完成任务。我读到我应该使用 phantomjs 让它在幕后运行,但是当我将驱动程序切换到 phantomjs 时,下载似乎没有通过。截图抓取,确实在正确的页面,“下载”肯定在那里。所以
elem.click()
没有做它应该做的,或者它正在点击,但 phantomjs 不知道如何处理直接下载链接。请帮忙,我已经连续几个小时了。
【问题讨论】:
-
PhantomJS 不会(从不)触发下载。您必须使用 XHR 或其他带有直接 url 的东西显式下载它,但有一个限制,它将在 30 秒标记处停止下载。
-
@ArtjomB。好点,下载部分可以通过
urlretrieve()处理如下图。
标签: python selenium selenium-webdriver webdriver phantomjs