Note I have already looked at the following sources:
easyprocess.EasyProcessCheckInstalledError: cmd=['Xvfb', '-help'] OSError=[Errno 2] No such file or directory
How do I run Selenium in Xvfb?
Which did not solve my problem.
I am using:
Running on Mac OSX El Capitan (10.11.6 (15G1108))
I get the following error (which is the same one that is in the above link):
Traceback (most recent call last):
File "/Users/user/Desktop/test.py", line 50, in <module>
display = Display(visible=0, size=(800, 600))
File "/Library/Python/2.7/site-packages/pyvirtualdisplay/display.py", line 34, in __init__
self._obj = self.display_class(
File "/Library/Python/2.7/site-packages/pyvirtualdisplay/display.py", line 52, in display_class
cls.check_installed()
File "/Library/Python/2.7/site-packages/pyvirtualdisplay/xvfb.py", line 38, in check_installed
ubuntu_package=PACKAGE).check_installed()
File "/Library/Python/2.7/site-packages/easyprocess/__init__.py", line 180, in check_installed
raise EasyProcessCheckInstalledError(self)
EasyProcessCheckInstalledError: cmd=['Xvfb', '-help']
OSError=[Errno 2] No such file or directory
Program install error!
I know I have Xvfb installed as well:
Xvfb -help
use: X [:<display>] [option]
-a # default pointer acceleration (factor)
-ac disable access control restrictions
-audit int set audit trail level
-auth file select authorization file
-br create root window with black background
+bs enable any backing store support
-bs disable any backing store support
-c turns off key-click
...
-pixdepths list-of-int support given pixmap depths
+/-render turn on/off RENDER extension support(default on)
-linebias n adjust thin line pixelization
-blackpixel n pixel value for black
-whitepixel n pixel value for white
-fbdir directory put framebuffers in mmap'ed files in directory
-shmem put framebuffers in shared memory
If the pip install is looking for xvfb in a different directory, some guidance would be appreciated as to how to redirect where it's looking.
Here is my code:
from easyprocess import EasyProcess
from pyvirtualdisplay import Display
from selenium import webdriver
display = Display(visible=0, size=(800, 600))
display.start()
# now Firefox will run in a virtual display.
# you will not see the browser.
browser = webdriver.Firefox()
browser.get('http://www.google.com')
print browser.title
browser.quit()
display.stop()
I've done countless pip installs and google searches and nothing has helped so far, the ultimate end goal is to have a headless automation that is capable of handling downloads, something PhantomJS is unable to do. Any help in that subject would be appreciated as well.
I dont see why you cant use this with osx, I have done that in past. But I have a better solution. Why dont you use docker + VNC . install any browser of your choice and run everything in the background Advantage: 1. Everything runs in the background. 2. Monitor execution in the browser with VNC web view 3. launch as many container as you want for parallel execution.
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