Selenium:FirefoxProfile异常无法加载配置文件。从PHP

时间:2017-03-20 23:12:15

标签: php python bash selenium-webdriver selenium-firefoxdriver

我的python脚本包含以下代码:

firefox_profile = webdriver.FirefoxProfile()
self.driver = webdriver.Firefox(firefox_profile=firefox_profile)

当我从bash执行脚本时,它可以工作,但如果我从PHP文件调用脚本,则使用以下命令:

shell_exec("python path_to_the_script");

我收到例外:

selenium.common.exceptions.WebDriverException: Message: Can't load the profile. Profile Dir: /tmp/tmp7Ob0z6/webdriver-py-profilecopy If you specified a log_file in the FirefoxBinary constructor, check it for details.

我还尝试手动设置配置文件,如下所示:

 firefox_profile = webdriver.FirefoxProfile(profile_directory='path_to_the_profile_dir')

但是没有改变,而如果我像这样设置配置文件目录路径:

firefox_profile = webdriver.FirefoxProfile(profile_directory='path_to_the_profile_dir')
firefox_profile.profile_dir = 'path_to_the_profile_dir'

异常错误更改为:

selenium.common.exceptions.WebDriverException: Message: Can't load the profile. Profile Dir: path_to_the_profile_dir If you specified a log_file in the FirefoxBinary constructor, check it for details.

我已将所有相关目录的权限设置为777,并且还尝试覆盖FirefoxBinary.launch_browser函数,以便它使用更大的超时值,但id不起作用。 我使用的是Python 2.7,Selenium 2.53.6和Firefox 46.0.1

Firefox正在无头模式下工作,通过Xvfb和pyvirtualdisplay。

2 个答案:

答案 0 :(得分:1)

这是因为您已将firefox更新为selenium不再支持的版本。

所以要解决这个问题,你有两个选择。

  1. 将您的firefox降级为47以后的旧版本
  2. 更新Selenium并安装geckodriver(推荐且简单)

  3. 如果您有ubuntu,请按照以下修复程序进行操作:
    1.用“sudo pip install -U selenium”更新selenium 2.从github下载geckodriver - > Gecko Github Link
    3.解压缩tar.gz文件夹并将gecko可执行文件移动到/ usr / local / bin
    4.现在打开终端并输入以下命令:
    export PATH=$PATH:/usr/local/bin/geckodriver

    那应该解决这个问题......至少它对我有用。

    我的来源:StackOverflow - Geckodriver

答案 1 :(得分:0)

如果这不能解决您的问题,请检查您的Firefox配置文件名称

像这样

fp = webdriver.FirefoxProfile('/home/YOUR_USERNAME/.mozilla/firefox/YOUR_PROFILE_NAME.default')
driver = webdriver.Firefox(firefox_profile=fp)

要查找您的firefox个人资料名称,请打开您的文件浏览器并启用“显示隐藏文件”,转到“Home / .mozilla / firefox”,您将看到您的firefox个人资料文件夹。

我希望这解决了你的问题