我希望能够使用Selenium从带有Python脚本的网站下载文件。我的问题是创建和设置Firefox配置文件到Firefox webdriver实例似乎不起作用...这是我的代码:
profile = webdriver.FirefoxProfile();
profile.set_preference("browser.download.folderList", 2);
profile.set_preference("browser.download.manager.showWhenStarting", False);
profile.set_preference("browser.download.dir", os.getcwd());
profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/xml");
profile.update_preferences();
browser = webdriver.Firefox(firefox_profile=profile);
即使使用上述设置,打开/保存对话框仍然会打开,并且不会进行下载。然后我尝试做一些更简单的事情:
profile = webdriver.FireforProfile();
profile.set_preference("browser.startup.homepage", "http://www.google.com");
profile.update_preferences();
browser = webdriver.Firefox(firefox_profile=profile);
我得到的只是firefox打开,就是这样。这让我相信配置文件没有设置为驱动程序。任何帮助将不胜感激!
答案 0 :(得分:0)
对于遇到此问题的任何人,这里都有一个函数,该函数将返回带有一些常用选项的webdriver。它不应该具有Firefox配置文件的硬编码路径,但是我还没有解决这个问题
def get_firefox_driver(download_dir=None, use_profile=False, headless=False):
if download_dir is None:
download_dir = os.getcwd()
if use_profile:
try:
fp = webdriver.FirefoxProfile(r'C:\Users\MDDT0040\AppData\Roaming\Mozilla\Firefox\Profiles\u5jvcbqp.dev-edition-default-1525796820341',)
except:
print('cant get profile')
fp = webdriver.FirefoxProfile()
else:
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList", int(2))
fp.set_preference("browser.download.manager.showWhenStarting", False)
fp.set_preference("browser.download.manager.showAlertOnComplete", False)
fp.set_preference("browser.download.dir", download_dir)
fp.set_preference('browser.helperApps.neverAsk.saveToDisk',
"text/csv,text/comma-separated-values,text/comma-separated-values;charset=UTF-8")
if headless:
options = Options()
options.headless = True
return webdriver.Firefox(firefox_profile=fp, firefox_options=options)
else:
return webdriver.Firefox(firefox_profile=fp)