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
I placed the phantomjs file into /usr/local/bin
and it worked fine.
Well I got this solved by the following CODE:
browser = webdriver.PhantomJS(executable_path = "/usr/local/Cellar/phantomjs/2.1.1/bin/phantomjs")
I met this problem before about python+phanomjs. solution:
Linux
putting phantomjs in /usr/local/share
Windows
putting phantomjs in /python/scripts
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).
conda install -c conda-forge phantomjs
, test it with phantomjs --version
."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.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)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With