WebDriverException:消息:'phantomjs'可执行文件可能具有错误的权限

时间:2016-11-06 04:49:27

标签: python selenium-webdriver phantomjs

在烧瓶上局部运行Selenium。我正在使用PhantomJS驱动程序。我之前有路径错误:

selenium.common.exceptions.WebDriverException: Message: 'phantomjs' executable needs to be in PATH. 

但是在从另一个StackOverflow问题中找到后,我了解到我必须将环境路径作为PhantomJS的参数传递。我下面的路径是虚拟环境文件夹中phantomJS文件夹的路径。

driver = webdriver.PhantomJS(executable_path='/Users/MyAcc/Documents/MYWEBAPP/venv/lib/python3.5/site-packages/selenium/webdriver/phantomjs')

但是,我现在收到一个新的错误代码:

selenium.common.exceptions.WebDriverException: Message: 'phantomjs' executable may have wrong permissions.

这是我在检查路径的文件权限时得到的结果。

total 40 
drwxr-xr-x 7 USER staff 238 Nov 6 00:07 . 
drwxr-xr-x 17 USER staff 578 Nov 6 00:03 .. 
-rw-r--r--@ 1 USER staff 6148 Nov 6 00:07 .DS_Store 
-rw-r--r-- 1 USER staff 787 Oct 31 12:27 __init__.py 
drwxr-xr-x 5 USER staff 170 Oct 31 12:27 __pycache__ 
-rw-r--r-- 1 USER staff 2587 Oct 31 12:27 service.py 
-rw-r--r-- 1 USER staff 2934 Oct 31 12:27 webdriver.py 

7 个答案:

答案 0 :(得分:2)

我将phantomjs文件放入/usr/local/bin并且工作正常。

答案 1 :(得分:2)

我通过以下代码解决了这个问题:

browser = webdriver.PhantomJS(executable_path = "/usr/local/Cellar/phantomjs/2.1.1/bin/phantomjs")

答案 2 :(得分:1)

我在关于python + phanomjs之前遇到过这个问题。 溶液:

<强>的Linux

将phantomjs放入/usr/local/share

<强>窗

将phantomjs放入/python/scripts

答案 3 :(得分:1)

我认为您遇到问题的真正原因是: webdrive所需的phantomjs并非selenium/webdriver折叠之下的那个。当您使用anaconda安装此软件包时,确实令人困惑(至少对我而言)。

  • 首先使用conda install -c conda-forge phantomjs安装它,然后使用phantomjs --version进行测试。
  • 然后您可以在此文件夹中找到真正的phantomjs.exe:"path = /${home_path}/anaconda3/envs/${env_name}/bin/phantomjs"。要测试它是否是真实路径,请使用/${home_path}/anaconda3/envs/${env_name}/bin/phantomjs --version进行测试。它应该正确输出__version__信息。
  • 将此路径暂停到webdriver.PhantomJS(executable_path=path),它将得到修复。

因此,无需使用chmod或将其放在/usr/local/bin中(这样,唯一的好处就是可以跳过executable参数)

答案 4 :(得分:0)

executable_path = './phantomjs-2.1.1-linux-x86_64/bin/phantomjs'

service_log_path = './log/ghostdriver.log'

driver = webdriver.PhantomJS(executable_path=executable_path, service_log_path=service_log_path)

您可以使用相对路径和绝对路径。

答案 5 :(得分:0)

selenium.common.exceptions.WebDriverException:消息:'phantomjs'可执行文件可能具有错误的权限。

这个错误,因为phantomjs没有执行权限,只要对于phantomjs - 2.1.1 - Linux - x86_64 / bin / phantomjs添加执行权限,chmod u + x phantomjs

希望你能帮助你

答案 6 :(得分:-1)

奇怪的是,对我来说,通过将phantomjs放入/usr/local/share并添加一些符号链接来解决这个问题。我跟着these steps

  • 将phantomjs文件夹移至/usr/local/share/
    • sudo mv phantomjs-2.1.1-linux-x86_64.tar.bz2 /usr/local/share/.
  • 创建符号链接:
    • sudo ln -s /usr/local/share/phantomjs-1.8.1-linux-x86_64 /usr/local/share/phantomjs
    • sudo ln -s /usr/local/share/phantomjs-1.8.1-linux-x86_64 /usr/local/share/phantomjs

我不是Linux专家,所以我不知道为什么会有所作为。如果有人想要投入,请随意。