我正在尝试在AmazonEC2上运行selenium。我使用pyvirtualdisplay作为xvfb包装器。我在python中运行了以下命令。
from pyvirtualdisplay import Display
from selenium import webdriver
display = Display(visible=0, size=(1024, 768))
display.start()
到目前为止一切都很好
但当我这样做时:
driver = webdriver.Firefox()
我得到这个错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.6/site- packages/selenium/webdriver/firefox/webdriver.py", line 59, in __init__
self.binary, timeout),
File "/usr/lib/python2.6/site-packages/selenium/webdriver/firefox/extension_connection.py", line 47, in __init__
self.binary.launch_browser(self.profile)
File "/usr/lib/python2.6/site-packages/selenium/webdriver/firefox/firefox_binary.py", line 66, in launch_browser
self._wait_until_connectable()
File "/usr/lib/python2.6/site- packages/selenium/webdriver/firefox/firefox_binary.py", line 100, in _wait_until_connectable
raise WebDriverException("The browser appears to have exited "
selenium.common.exceptions.WebDriverException: Message: The browser appears to have exited before we could connect. If you specified a log_file in the FirefoxBinary constructor, check it for details.
在互联网上花了很多小时寻找解决方案并尝试了所有可能的方法后,有一件事对我很有效
https://superuser.com/questions/870702/aws-ec2-linux-headless-firefox-issue-xvfb-undefined-symbol-pixman-glyph-cache
正如答案所说:
它正在尝试加载wrw pixman so。删除/usr/local/lib/libpixman-1.so.0并重试,它将使Xvfb使用具有此符号的分发pixman库。