【问题标题】:WebDriverException: Message: 'phantomjs' executable may have wrong permissionsWebDriverException:消息:“phantomjs”可执行文件可能有错误的权限
【发布时间】:2016-11-06 04:49:26
【问题描述】:

在烧瓶上本地运行 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 

【问题讨论】:

  • 当你列出目录ls -al - rwxrwxrwx时这个文件有什么权限?
  • total 40drwxr-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__.pydrwxr-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
  • 问题解决了吗?谢谢你

标签: python selenium-webdriver phantomjs


【解决方案1】:

我认为你问题的真正原因是:webdrive需要的phantomjs不是selenium/webdriverfold下的那个。当你使用 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参数)

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 它在 Windows 10 中也适用于我。最后的“phantomjs”是 phantomjs.exe,而不是折叠。
    【解决方案3】:

    我将 phantomjs 文件放入/usr/local/bin,它运行良好。

    【讨论】:

      【解决方案4】:

      我之前遇到过关于python+phanomjs的这个问题。 解决方案:

      Linux

      将 phantomjs 放入 /usr/local/share

      Windows

      将phantomjs放入/python/scripts

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

        • 欢迎来到 Stack Overflow,不要重复发布答案,编辑您的第一个答案并在那里进行更改,花点时间阅读how to write an answer
        【解决方案6】:

        奇怪的是,对我来说,它是通过将 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 专家,所以我不知道为什么这会有所作为。如果有人想参与,请随意。

        【讨论】:

          【解决方案7】:
          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)
          

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

          【讨论】:

            猜你喜欢
            • 2022-01-20
            • 2019-02-17
            • 2022-01-19
            • 2020-10-22
            • 1970-01-01
            • 1970-01-01
            • 2018-09-22
            • 2019-04-17
            • 1970-01-01
            相关资源
            最近更新 更多