Configurer Selenium avec le pilote Chrome sur Ubuntu/Debian
- Configuration et exécution de Chrome et Selenium sur Ubuntu ou Debian
- Le guide est basé sur Ubuntu 22.04
- Dernière modification : 4 juin 2024
# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.3 LTS"
Table des matières
- Étape 1 : Mettez à jour tous les packages, si nécessaire
- Étape 2 : Téléchargez le package stable de Google-Chrome
- Étape 3 : Installez Google Chrome
- (Facultatif) Si vous rencontrez un problème de dépendance après l'étape 3, exécutez la commande suivante puis réessayez l'étape 3
- Étape 4 : Vérifiez la version Google-Chrome installée
- Étape 5 : Installez Selenium, webdriver-manager
- Étape 6 : Créer hello_world
- Étape 7 : Exécutez test.py et vérifiez que Google-Chrome est disponible
- Étape 8 : C'est tout. Profitez-en.:)
- FAQ :)
- 1. Ma VM s'exécute dans un environnement cloud. Dans ce cas, comment dois-je utiliser Chrome ?
- 2. J'ai écrit un script Python en utilisant Chrome et Selenium et je l'ai planifié avec crontab, mais cron ne fonctionne pas correctement. Que dois-je faire?
- 3. La raison des différentes manières de charger ChromeDriver est la suivante, par exemple, quelles sont les différences entre (1) et (2) ?
- 4. google-chrome a été mis à jour. Où puis-je télécharger ChromeDriver et comment l'installer ?
- 4.1. Accédez à la page de téléchargement du pilote Chrome.
- 4.2. Téléchargez le pilote Chrome.
- 4.3. Installez le pilote Chrome.
- 4.4. Exemple d'utilisation en Python :
- 5. Comment puis-je empêcher la mise à jour automatique du package Google-Chrome sur Ubuntu ?
Étape 1 : mettre à jour tous les packages, si nécessaire
# apt update
# apt upgrade
Étape 2 : Téléchargez le package stable « google-chrome »
# wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
Étape 3 : Installez « google-chrome »
# apt-get install -y ./google-chrome-stable_current_amd64.deb
Étape 4 : Vérifiez la version installée de « google-chrome »
# google-chrome --version
Google Chrome 123.0.6312.86
Étape 5 : Installez Selenium, webdriver-manager
- https://pypi.org/project/webdriver-manager/
# pip3 install selenium
# pip3 install webdriver-manager
Étape 6 : créer hello_world
- Exécuter avec Chrome sans tête
# vim test.py
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
options = Options ()
options.add_argument( ' --headless ' )
options.add_argument( ' --no-sandbox ' )
options.add_argument( ' --disable-dev-shm-usage ' )
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
driver.get( " https://python.org " )
print(driver.title)
driver.close ()
- Exécuter avec l'interface graphique de Chrome
# vim test.py
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
options = Options ()
# options.add_argument('--headless')
# options.add_argument('--no-sandbox')
options.add_argument( ' --disable-dev-shm-usage ' )
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
driver.get( " https://python.org " )
print(driver.title)
driver.close ()
Étape 7 : Exécutez test.py et vérifiez que « google-chrome » est disponible
# python3 test.py
Welcome to Python.org
Étape 8 : C'est tout. Profitez-en:)
FAQ :)
1. Ma VM s'exécute dans un environnement cloud. Dans ce cas, comment dois-je utiliser Chrome ?
- Dans un environnement cloud, les utilisateurs utilisent généralement Chrome en mode sans tête.
- En d’autres termes, dans un environnement cloud, les machines virtuelles peuvent ne pas prendre en charge le mode d’affichage, en particulier les machines virtuelles gratuites (niveaux gratuits).
- Cependant, si vos machines virtuelles prennent en charge X-windows ou Display, vous pouvez également utiliser le mode GUI
2. J'ai écrit un script Python en utilisant Chrome et Selenium et je l'ai planifié avec crontab, mais cron ne fonctionne pas correctement. Que dois-je faire?
- dans de nombreux résultats de recherche, il semble que vous deviez spécifier le mode d'affichage sur 0 dans votre script lorsque vous l'exécutez via cron.
- Comme ça:)
*/1 * * * * export DISPLAY=:0; python ~/selenium_script.py
- Cependant, les machines virtuelles typiques exécutant Chrome s'exécutent en mode sans tête, où les paramètres d'affichage ne sont pas pertinents.
- Le problème peut être que lors de l'exécution de cronjob, cron n'a pas le chemin chromedriver dans le chemin de cron.
- vous devez donc spécifier le chemin du pilote chrome dans cron ou dans votre lanceur (script).
- Si vous ne connaissez pas le chemin d'accès à chromedriver, vous pouvez le trouver à l'aide de la commande suivante (ou en définissant le mode WDM_LOG) :
# find / -name "chromedriver"
/root/.cache/selenium/chromedriver
/root/.cache/selenium/chromedriver/linux64/117.0.5938.92/chromedriver
/root/.wdm/drivers/chromedriver
/root/.wdm/drivers/chromedriver/linux64/117.0.5938.92/chromedriver-linux64/chromedriver
- Ensuite, vous pouvez définir le chemin dans crontab et l'exécuter, comme ceci :)
*/05 * * * * export PATH=$PATH:/root/.wdm/drivers/chromedriver/linux64/117.0.5938.92/chromedriver-linux64/chromedriver; root /data/test.py
Vous pouvez également créer un script Bash qui charge le script Python et spécifie le chemin :
# vim test_loader.sh
#!/bin/bash
export PATH=$PATH:/root/.wdm/drivers/chromedriver/linux64/117.0.5938.92/chromedriver-linux64/chromedriver
...
...
python3 test.py
3. La raison des différentes manières de charger ChromeDriver est la suivante, par exemple, quelles sont les différences entre (1) et (2) ?
(1)
from selenium import webdriver
driver = webdriver.Chrome('/home/user/drivers/chromedriver')
(2)
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))
- (1) Charge le pilote Chrome à l'aide du pilote Web de Selenium. Dans ce cas, vous devez télécharger le binaire chromedriver, le décompresser quelque part sur votre PC et définir le chemin d'accès à ce pilote. (Compatible avec Selenium 4.x et versions antérieures.)
- (2) Exécute Chrome à l'aide de webdriver-manager. Lorsque vous utilisez le package webdriver-manager, il n'est pas nécessaire de télécharger le binaire chromedriver séparément.
Gestionnaire d'installation :
pip install webdriver-manager
Utiliser avec Chrome
sélénium 3
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
sélénium 4
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))
- Pour plus de détails, reportez-vous à https://pypi.org/project/webdriver-manager/.
4. google-chrome a été mis à jour. Où puis-je télécharger ChromeDriver et comment l'installer ?
- Le 4 juin 2024, la dernière version de Chrome est " 125.0.6422.142 "
4.1. Accédez à la page de téléchargement de ChromeDriver.
- Téléchargez le pilote Chrome avec la même version que votre Chrome mis à jour.
- Cliquez sur le lien sur le tableau de bord de disponibilité de Chrome for Testing : https://chromedriver.chromium.org/downloads
- https://googlechromelabs.github.io/chrome-for-testing/ pour trouver le pilote Chrome correspondant à votre version mise à jour de Chrome.
4.2. Téléchargez le pilote Chrome.
- Téléchargez la version du pilote Chrome qui correspond à votre Chrome.
- https://googlechromelabs.github.io/chrome-for-testing/
For Mac M1, download mac-arm64.
- For Chrome version: https://storage.googleapis.com/chrome-for-testing-public/125.0.6422.141/mac-arm64/chromedriver-mac-arm64.zip
For General Linux distributions, download linux64.
- For Chrome version: https://storage.googleapis.com/chrome-for-testing-public/125.0.6422.141/linux64/chromedriver-linux64.zip
4.3. Installez le pilote Chrome.
- Étant donné que le pilote Chrome est un fichier binaire, il n'y a pas de processus d'installation distinct.
- Extrayez l'archive zip et copiez le fichier chromedriver dans le répertoire où se trouve le pilote Chrome.
Pour Mac, l'emplacement par défaut de chromedriver est /usr/local/bin.
% sw_vers
ProductName: macOS
ProductVersion: 13.0
BuildVersion: 22A380
% ls -al /usr/local/bin/chromedriver
-rwxr-xr-x 1 root wheel 17314928 Mar 25 13:23 /usr/local/bin/chromedriver
Si vous souhaitez le placer dans un répertoire personnalisé :
- Placez le fichier « chromedriver » à l'emplacement souhaité. Par exemple : « /Users/mymac/data/chromedrv/chromedriver ».
4.4. Exemple d'utilisation en Python :
from selenium import webdriver
from selenium . webdriver . chrome . service import Service
def chrome_webdriver ():
chromedriver_path = '/Users/mymac/data/chromedrv/chromedriver'
user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/123.0.0.0 Safari/537.36'
options = webdriver . ChromeOptions ()
options . add_argument ( "--start-maximized" )
options . add_argument ( '--headless' )
options . add_argument ( f'user-agent= { user_agent } ' )
service = Service ( executable_path = chromedriver_path )
driver = webdriver . Chrome ( service = service , options = options )
return driver
url = 'http://www.google.com'
driver = chrome_webdriver ()
driver . get ( url )
driver . implicitly_wait ( 10 )
print ( driver . page_source )
5. Comment puis-je empêcher la mise à jour automatique du package « google-chrome » sur Ubuntu ?
- Pour empêcher Google Chrome de se mettre à jour automatiquement sur Ubuntu, vous pouvez utiliser l'épinglage du package ou apt-mark pour conserver le package Chrome. Cependant, cela n'est généralement pas recommandé
- Gardez à l'esprit que la désactivation des mises à jour automatiques de Chrome peut compromettre la sécurité. Il est généralement recommandé de gérer correctement les mises à jour pour bénéficier des avantages en matière de sécurité et de fonctionnalités.
Utilisation d'apt-mark :
- Conservez le package pour empêcher les mises à jour :
# apt-mark hold google-chrome-stable
google-chrome-stable set on hold.
- Pour autoriser à nouveau les mises à jour, libérez la suspension :
# apt-mark unhold google-chrome-stable
Canceled hold on google-chrome-stable.