单击Javascript警报时,如何保持Firefox首选项?

2024-04-26 01:24:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图点击一个链接下载一个文件。我设置了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()

Tags: 文件namebrowserurlget链接downloaddriver
1条回答
网友
1楼 · 发布于 2024-04-26 01:24:05

考虑到它忽略了never save to disk选项,我猜应该是您尝试使用的MIME类型。你知道吗

根据vcard上的wiki,自版本4以来,他们不赞成使用类型text/x-vcard

尝试使用MIME类型

text/vcard

如果不起作用,那么可以在类型..中指定通配符。。你知道吗

*/*

此外,您的代码还有一些极端优化的空间。不用循环浏览页面上所有的A元素,只需使用CSS选择器!你知道吗

driver.find_element_by_css("a[href*='action=vCard']").click()

相关问题 更多 >