我的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。
答案 0 :(得分:1)
这是因为您已将firefox更新为selenium不再支持的版本。
所以要解决这个问题,你有两个选择。
如果您有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
那应该解决这个问题......至少它对我有用。
答案 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个人资料文件夹。
我希望这解决了你的问题