• 使用selenium调用firefox提示Profile Missing的问题解决


    在Ubuntu22.04环境中,使用python3运行selenium提示 Profile Missing, 具体信息为:
    Your Firefox profile cannot be loaded. It may be missing or inaccessible

    在这个问题的环境中firefox浏览器工作正常。

    排查中,手动在命令行执行firefox可以打开浏览器,但是出现如下提示

    Gtk-Message: 15:32:09.944: Not loading module "atk-bridge": The functionality is provided by GTK natively. Please try to not load it.
    [27589, Main Thread] WARNING: GTK+ module /snap/firefox/4136/gnome-platform/usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so cannot be loaded.
    GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in the same process is not supported.: 'glib warning', file /build/firefox/parts/firefox/build/toolkit/xre/nsSigHandlers.cpp:187
    
    (firefox:27589): Gtk-WARNING **: 15:32:09.987: GTK+ module /snap/firefox/4136/gnome-platform/usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so cannot be loaded.
    GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in the same process is not supported.
    Gtk-Message: 15:32:09.987: Failed to load module "canberra-gtk-module"
    [27589, Main Thread] WARNING: GTK+ module /snap/firefox/4136/gnome-platform/usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so cannot be loaded.
    GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in the same process is not supported.: 'glib warning', file /build/firefox/parts/firefox/build/toolkit/xre/nsSigHandlers.cpp:187
    
    (firefox:27589): Gtk-WARNING **: 15:32:09.988: GTK+ module /snap/firefox/4136/gnome-platform/usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so cannot be loaded.
    GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in the same process is not supported.
    Gtk-Message: 15:32:09.988: Failed to load module "canberra-gtk-module"
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    事实证明,在这个环境中使用apt-get install libcanberra-gtk-module命令来安装软件包并不能解决问题。

    主要的原因在于:
    Ubuntu 22.04开始,Firefox可能默认以Snap包形式提供,对于Snap版本的Firefox,配置文件路径通常位于:/home/$USER/snap/firefox/common/.mozilla/firefox/ 这个目录下,因此相关的代码变更如下:
    原代码:

    from selenium import webdriver
    driver = webdriver.Firefox()
    driver.get("http://www.baidu.com")
    
    • 1
    • 2
    • 3

    更新后的代码

    from selenium import webdriver
    from selenium.webdriver.firefox.options import Options
    from selenium.webdriver import Firefox
    
     firefox_options = Options()
     firefox_options.add_argument('-profile')
     firefox_options.add_argument('/home/xxx/snap/firefox/common/.mozilla/firefox')
     driver = webdriver.Firefox(options=firefox_options)
    driver.get("http://www.baidu.com")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    特此记录一下

  • 相关阅读:
    Linux——文件编程练手1:实现Linux cp命令的代码
    链表——算法专项刷题(四)
    SSH工具:XShell 常见的快捷命令整理汇总
    Socks5代理技术:驱动数字化时代跨界发展的利器
    十个一手app拉新地推拉新推广接单平台,放单/接任务渠道
    Failed to rollback to checkpoint/savepoint hdfs://mycluster:8020/ck/sapgateway
    【uniapp基础篇】上传图片
    Java模糊查询批量删除Redis的Key实现
    力扣 6183周赛:字符串的前缀分数和 ——Trie树
    用于旅行商问题的离散布谷鸟算法
  • 原文地址:https://blog.csdn.net/haiqinma/article/details/137967299