J'ai récemment installé PhantomJS et rencontré cette erreur lors de ma première exécution:
from Selenium import webdriver
from Selenium.webdriver.common.keys import Keys
driver = webdriver.PhantomJS()
driver.get("http://www.google.com")
driver.find_element_by_id('some_element').send_keys('something' + Keys.RETURN)
Ce code fonctionne avec le pilote Web Firefox mais ne fonctionne pas avec PhantomJS. J'obtiens l'erreur suivante:
Traceback (most recent call last):
File "<PATHTOFILE>", line 20, in <module>
driver.find_element_by_id('lst-ib').send_keys('something' + Keys.RETURN)
File "/usr/local/lib/python3.5/dist-packages/Selenium/webdriver/remote/webdriver.py", line 266, in find_element_by_id
return self.find_element(by=By.ID, value=id_)
File "/usr/local/lib/python3.5/dist-packages/Selenium/webdriver/remote/webdriver.py", line 744, in find_element
{'using': by, 'value': value})['value']
File "/usr/local/lib/python3.5/dist-packages/Selenium/webdriver/remote/webdriver.py", line 233, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python3.5/dist-packages/Selenium/webdriver/remote/errorhandler.py", line 165, in check_response
raise exception_class(value)
Selenium.common.exceptions.WebDriverException: Message: Error - Unable to load Atom 'find_element' from file ':/ghostdriver/./third_party/webdriver-atoms/find_element.js'
La raison en est que j'ai utilisé apt-get install Phantomjs
pour l'installer, mais il semble que ce soit une version de Phantomjs non fonctionnelle installée par apt-get
. Donc, téléchargez manuellement à partir du site Web Phantomjs et ajoutez la direction contenant à la variable d'environnement PATH
.
Ce sont les étapes précises qui ont fonctionné pour moi:
Purger les vieux fantômesapt purge phantomjs
Wget les derniers phantomjs (selon http://phantomjs.org/download.html )wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
Détachez-letar xvjf phantomjs-2.1.1-linux-x86_64.tar.bz2
Déplacé l'exécutable phantomjs vers/usr/bin/(peut-être besoin de Sudo)cp phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/bin/
Pour moi ça commence à marcher après
apt install nodejs-legacy # just an alias node/nodejs to make npm install work
apt purge phantomjs # optionaly
npm install -g phantomjs # most important part because apt installation failed for me