我正在尝试点击链接下载文件。我将Firefox首选项设置为将文件保存到特定位置。但是,此特定链接提供了一个我必须在下载之前接受的弹出窗口。在我接受弹出窗口后,似乎我丢失了我的首选项,并且文件按正常情况下载(而不是指定文件)。如何避免失去我的偏好?
这是网站: http://gtlaw.com/People/Jeffrey-S-Kahn
我想要点击的链接是:
<a href='javascript:vCard("../webportal/perform.v?obj=ve_oid:poid:Z1tOl9NPl44TqzcSkLMUwG3DtW3D&action=vCard")' style="font-weight: bold;">Download vCard</a>
我正在使用的代码是这样的(修改后可以使复制更容易):
url = "http://gtlaw.com/People/Jeffrey-S-Kahn"
#set preferences
fp = webdriver.FirefoxProfile()
file_name = "C:\..........."
fp.set_preference("browser.download.folderList", 2)
fp.set_preference("browser.download.manager.showWhenStarting",False)
fp.set_preference("browser.download.dir", file_name)
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "text/x-vcard")
fp.set_preference("dom.max_chrome_script_run_time", 0)
fp.set_preference("dom.max_script_run_time", 0)
driver = webdriver.Firefox(firefox_profile=fp)
#get url
driver.get(url)
#get element to click
href = 'javascript:vCard("../webportal/perform.v?obj=ve_oid:poid:Z1tOl9NPl44TqzcSkLMUwG3DtW3D&action=vCard")'
elements = driver.find_elements_by_tag_name('a')
for e in elements:
if e.get_attribute("href") == href:
element = e
#click on element
element.click()
#deal with pop up
driver.switch_to_alert().accept()
答案 0 :(得分:1)
考虑到它忽略了从不保存到磁盘的选项,我的猜测将是您尝试使用的MIME类型。
根据vCards上的wiki,自版本4起,他们弃用了text/x-vcard
尝试使用MIME类型
text/vcard
如果这不起作用,那么您可以在类型..
中指定通配符*/*
此外,您的代码还有一些极端优化的空间。而不是遍历页面上的所有A元素,只需使用CSS选择器!
driver.find_element_by_css("a[href*='action=vCard']").click()