Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

WebDriverException: Message: 'phantomjs' executable may have wrong permissions

Running Selenium locally on flask. Im using the PhantomJS driver. I previously had a path error:

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

But after finding out from another StackOverflow question, I learned that I have to pass the environment path as a parameter for PhantomJS. The path I have below is the path to the phantomJS folder in my virtual environment folder.

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

However, I get a new error-code now:

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

Here's what I get when I check the file permissions of the path.

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 
like image 376
Tahir Avatar asked Nov 06 '16 04:11

Tahir


4 Answers

I placed the phantomjs file into /usr/local/bin and it worked fine.

like image 174
Joe Daniels Avatar answered Nov 03 '22 05:11

Joe Daniels


Well I got this solved by the following CODE:

browser = webdriver.PhantomJS(executable_path = "/usr/local/Cellar/phantomjs/2.1.1/bin/phantomjs")
like image 43
Nabin Bhusal Avatar answered Nov 03 '22 07:11

Nabin Bhusal


I met this problem before about python+phanomjs. solution:

Linux

putting phantomjs in /usr/local/share

Windows

putting phantomjs in /python/scripts

like image 45
E.choose Avatar answered Nov 03 '22 05:11

E.choose


I think the true reason for you problem is that: The phantomjs which webdrive needs is not the one under selenium/webdriver fold. When you use anaconda to install this package, it's really confusing (at least for me).

  • First install it with conda install -c conda-forge phantomjs, test it with phantomjs --version.
  • Then you can find the true phantomjs.exe in this fold: "path = /${home_path}/anaconda3/envs/${env_name}/bin/phantomjs". To test if it's the true path, test with /${home_path}/anaconda3/envs/${env_name}/bin/phantomjs --version. It should output __version__ information correctly.
  • Pause this path to webdriver.PhantomJS(executable_path=path) and it will be fixed.

So there's no need to use chmod or put it in /usr/local/bin (in this way, the only goodness is that you can skip the executable parameter)

like image 1
Yixuan Wei Avatar answered Nov 03 '22 06:11

Yixuan Wei