Update README.md
This commit is contained in:
165
README.md
165
README.md
@@ -1 +1,164 @@
|
|||||||
# chromeDriver_sync
|
# Synchronisation `chromedriver` ↔ `Google Chrome` (Ubuntu)
|
||||||
|
|
||||||
|
**Dernière mise à jour :** 2025-11-03 15:15
|
||||||
|
|
||||||
|
Ce guide explique comment garder **chromedriver** aligné automatiquement avec la version installée de **Google Chrome**.
|
||||||
|
Il inclut : un script robuste (`/home/scripts/chromeDriver.sh`) et une planification via **cron** (ou, en option, un **timer systemd**).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 Objectif
|
||||||
|
Éviter les erreurs du type :
|
||||||
|
> The chromedriver version ... might not be compatible with the detected chrome version ...
|
||||||
|
|
||||||
|
En téléchargeant **exactement** la version correspondante depuis **Chrome for Testing** et en l’installant dans `/usr/local/bin/chromedriver`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ Prérequis
|
||||||
|
- Ubuntu (ou Debian-like) avec `curl`, `unzip` et `util-linux` (pour `flock`)
|
||||||
|
- Chrome installé (`google-chrome --version` doit fonctionner)
|
||||||
|
- Droits `root` pour installer dans `/usr/local/bin`
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install -y curl unzip
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🧩 Installation du script
|
||||||
|
1) Créer le dossier scripts (si nécessaire) :
|
||||||
|
```bash
|
||||||
|
sudo mkdir -p /home/scripts
|
||||||
|
```
|
||||||
|
|
||||||
|
2) Créer/mettre à jour le script `/home/scripts/chromeDriver.sh` :
|
||||||
|
```bash
|
||||||
|
sudo nano /home/scripts/chromeDriver.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
3) Coller **le contenu ci‑dessous**, sauvegarder, rendre exécutable :
|
||||||
|
```bash
|
||||||
|
sudo chmod +x /home/scripts/chromeDriver.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Contenu recommandé de `/home/scripts/chromeDriver.sh`
|
||||||
|
```bash
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -Eeuo pipefail
|
||||||
|
|
||||||
|
# -- Config --
|
||||||
|
DRIVER_DST="/usr/local/bin/chromedriver"
|
||||||
|
|
||||||
|
# -- Fonctions utilitaires --
|
||||||
|
log(){ printf "[%(%F %T)T] %s\n" -1 "$*"; }
|
||||||
|
die(){ log "❌ $*"; exit 1; }
|
||||||
|
|
||||||
|
# -- Trouver Google Chrome --
|
||||||
|
if command -v google-chrome >/dev/null 2>&1; then
|
||||||
|
CHROME_BIN="google-chrome"
|
||||||
|
elif command -v google-chrome-stable >/dev/null 2>&1; then
|
||||||
|
CHROME_BIN="google-chrome-stable"
|
||||||
|
else
|
||||||
|
die "Google Chrome introuvable. Installe-le puis relance le script."
|
||||||
|
fi
|
||||||
|
|
||||||
|
CHROME_VER="$($CHROME_BIN --version | awk '{print $3}')"
|
||||||
|
[[ -n "${CHROME_VER:-}" ]] || die "Impossible de lire la version de Chrome."
|
||||||
|
|
||||||
|
# -- Si chromedriver existe déjà, comparer les versions --
|
||||||
|
CURRENT_DRV_VER=""
|
||||||
|
if [[ -x "$DRIVER_DST" ]]; then
|
||||||
|
CURRENT_DRV_VER="$( "$DRIVER_DST" --version 2>/dev/null | awk '{print $2}' )" || true
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$CURRENT_DRV_VER" == "$CHROME_VER" ]]; then
|
||||||
|
log "✅ Déjà à jour : chromedriver=$CURRENT_DRV_VER | chrome=$CHROME_VER"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# -- Télécharger le driver correspondant via Chrome for Testing --
|
||||||
|
URL="https://storage.googleapis.com/chrome-for-testing-public/${CHROME_VER}/linux64/chromedriver-linux64.zip"
|
||||||
|
TMPDIR="$(mktemp -d)"
|
||||||
|
cleanup(){ rm -rf "$TMPDIR"; }
|
||||||
|
trap cleanup EXIT
|
||||||
|
|
||||||
|
log "⬇️ Téléchargement : $URL"
|
||||||
|
curl -fL --connect-timeout 10 --retry 3 --retry-delay 1 -o "$TMPDIR/chromedriver.zip" "$URL" \
|
||||||
|
|| die "Téléchargement impossible pour la version $CHROME_VER (URL invalide ? Chrome pas encore à jour côté Google ?)"
|
||||||
|
|
||||||
|
log "📦 Décompression"
|
||||||
|
unzip -o -q "$TMPDIR/chromedriver.zip" -d "$TMPDIR"
|
||||||
|
|
||||||
|
log "🛠️ Installation vers $DRIVER_DST"
|
||||||
|
install -m 0755 "$TMPDIR/chromedriver-linux64/chromedriver" "$DRIVER_DST"
|
||||||
|
|
||||||
|
NEW_VER="$( "$DRIVER_DST" --version | awk '{print $2}' )"
|
||||||
|
if [[ "$NEW_VER" != "$CHROME_VER" ]]; then
|
||||||
|
die "Mismatch après installation: driver=$NEW_VER vs chrome=$CHROME_VER"
|
||||||
|
fi
|
||||||
|
|
||||||
|
log "✅ chromedriver $NEW_VER installé (aligné sur Chrome $CHROME_VER)"
|
||||||
|
```
|
||||||
|
|
||||||
|
4) Test manuel :
|
||||||
|
```bash
|
||||||
|
sudo /home/scripts/chromeDriver.sh
|
||||||
|
chromedriver --version
|
||||||
|
google-chrome --version
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⏱️ Planification avec `cron`
|
||||||
|
Édite la **crontab root** :
|
||||||
|
```bash
|
||||||
|
sudo crontab -e
|
||||||
|
```
|
||||||
|
Ajoute **une** ligne (exécuter tous les vendredis à 08:00) :
|
||||||
|
```cron
|
||||||
|
0 8 * * 5 bash /home/scripts/chromeDriver.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🧪 Smoke test Robot Framework
|
||||||
|
`sanity.robot` :
|
||||||
|
```robot
|
||||||
|
*** Settings ***
|
||||||
|
Library SeleniumLibrary
|
||||||
|
|
||||||
|
*** Test Cases ***
|
||||||
|
Sanity Chrome
|
||||||
|
Open Browser https://example.com chrome
|
||||||
|
Page Should Contain Example Domain
|
||||||
|
[Teardown] Close Browser
|
||||||
|
```
|
||||||
|
|
||||||
|
Exécution :
|
||||||
|
```bash
|
||||||
|
which robot || python3 -m pip install -U robotframework selenium robotframework-seleniumlibrary
|
||||||
|
robot sanity.robot
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🛠️ Dépannage
|
||||||
|
- **Mismatch persistant** : un ancien `chromedriver` peut traîner dans le PATH :
|
||||||
|
```bash
|
||||||
|
type -a chromedriver
|
||||||
|
sudo rm -f /usr/bin/chromedriver ~/.local/bin/chromedriver
|
||||||
|
```
|
||||||
|
- **Proxy** : définir `HTTPS_PROXY`, `HTTP_PROXY`, `NO_PROXY` si besoin.
|
||||||
|
- **Permissions** : le script installe dans `/usr/local/bin` → nécessite `root`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ Résumé
|
||||||
|
- Script robuste : `/home/scripts/chromeDriver.sh`
|
||||||
|
- Installation dans : `/usr/local/bin/chromedriver`
|
||||||
|
- Planification via cron
|
||||||
|
- Compatible Ubuntu 24.04+ (Noble) / Chrome stable
|
||||||
|
|
||||||
|
Bon tests ! 🧪🚀
|
||||||
|
|||||||
Reference in New Issue
Block a user