Python中的Selenium:将Firefox配置文件设置为webdriver似乎不太合适

2024-04-24 23:19:21 发布

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

我希望能够使用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);

即使使用上述设置,“打开/保存”对话框仍会打开,并且不会进行下载。然后我试着做一些简单的事情:

^{pr2}$

我只需要打开firefox,就这样。这让我相信,配置文件没有设置为司机。任何帮助都将不胜感激!在


Tags: 文件实例代码browser脚本网站download配置文件
1条回答
网友
1楼 · 发布于 2024-04-24 23:19:21

对于任何人来说,这里都是一个函数,它将返回一个带有一些常用选项的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)

相关问题 更多 >