Atur Selenium dengan driver chrome di ubuntu/debian
- Menyiapkan dan menjalankan Chrome dan Selenium di ubuntu atau debian
- Panduan ini didasarkan pada ubuntu 22.04
- Terakhir Dimodifikasi: 4 Juni 2024
# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.3 LTS"
Daftar isi
- Langkah 1: Perbarui semua paket, Jika perlu
- Langkah 2: Unduh paket stabil Google-chrome
- Langkah 3: Instal Google Chrome
- (Opsional) Jika Anda mengalami masalah ketergantungan setelah langkah 3, jalankan perintah berikut lalu coba lagi langkah 3
- Langkah 4: Periksa versi Google-chrome yang terinstal
- Langkah 5: Instal Selenium, manajer webdriver
- Langkah 6: Buat hello_world
- Langkah 7: Jalankan test.py dan periksa ketersediaan google-chrome
- Langkah 8: Itu Saja. Selamat menikmati. :)
- Pertanyaan Umum :)
- 1. VM saya berjalan di lingkungan cloud. Dalam hal ini, bagaimana cara menggunakan Chrome?
- 2. Saya menulis skrip Python menggunakan Chrome dan Selenium, dan menjadwalkannya dengan crontab, tetapi cron tidak berfungsi dengan benar. Apa yang harus saya lakukan?
- 3. Alasan perbedaan cara memuat ChromeDriver adalah sebagai berikut, misalnya apa perbedaan antara (1) dan (2)?
- 4. google-chrome telah diperbarui. Di mana saya dapat mengunduh ChromeDriver dan bagaimana cara menginstalnya?
- 4.1. Buka halaman Unduh Driver Chrome.
- 4.2. Unduh ChromeDriver.
- 4.3. Instal ChromeDrivernya.
- 4.4. Contoh Penggunaan dengan Python:
- 5. Bagaimana cara mencegah paket Google-chrome diperbarui secara otomatis di Ubuntu?
Langkah 1: perbarui semua paket, Jika perlu
# apt update
# apt upgrade
Langkah 2: Unduh paket stabil 'google-chrome'
# wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
Langkah 3: Instal 'google-chrome'
# apt-get install -y ./google-chrome-stable_current_amd64.deb
Langkah 4: Periksa versi 'google-chrome' yang terinstal
# google-chrome --version
Google Chrome 123.0.6312.86
Langkah 5: Instal Selenium, manajer webdriver
- https://pypi.org/project/webdriver-manager/
# pip3 install selenium
# pip3 install webdriver-manager
Langkah 6: buat hello_world
- Jalankan dengan Chrome Tanpa Kepala
# 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 ()
- Jalankan dengan Chrome GUI
# 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 ()
Langkah 7: Jalankan test.py dan periksa 'google-chrome' tersedia
# python3 test.py
Welcome to Python.org
Langkah 8: Itu Saja. Selamat menikmati :)
Pertanyaan Umum :)
1. VM saya berjalan di lingkungan cloud. Dalam hal ini, bagaimana cara menggunakan Chrome?
- Di lingkungan cloud, orang biasanya menggunakan Chrome dalam mode tanpa kepala.
- Dengan kata lain, di lingkungan cloud, VM mungkin tidak mendukung mode tampilan, terutama VM gratis (tingkatan gratis).
- Namun, jika VM Anda mendukung X-windows atau display, Anda juga dapat menggunakan mode GUI
2. Saya menulis skrip Python menggunakan Chrome dan Selenium, dan menjadwalkannya dengan crontab, tetapi cron tidak berfungsi dengan benar. Apa yang harus saya lakukan?
- banyak hasil pencarian tampaknya Anda perlu menentukan mode tampilan sebagai 0 di skrip Anda saat menjalankannya melalui cron.
- Seperti ini:)
*/1 * * * * export DISPLAY=:0; python ~/selenium_script.py
- Namun, VM umum yang menjalankan Chrome dijalankan dalam mode tanpa kepala, yang setelan tampilannya tidak relevan.
- Masalahnya mungkin ketika menjalankan cronjob, cron tidak memiliki jalur chromedriver di jalur cron.
- jadi Anda harus menentukan jalur chromedriver di cron atau peluncur Anda (skrip).
- Jika Anda tidak mengetahui jalur ke chromedriver, Anda dapat menemukannya menggunakan perintah berikut (atau dengan menyetel 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
- Setelah itu, Anda dapat mengatur jalur di crontab dan menjalankannya, seperti ini :)
*/05 * * * * export PATH=$PATH:/root/.wdm/drivers/chromedriver/linux64/117.0.5938.92/chromedriver-linux64/chromedriver; root /data/test.py
Atau, Anda dapat membuat skrip Bash yang memuat skrip Python dan menentukan jalurnya:
# 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. Alasan perbedaan cara memuat ChromeDriver adalah sebagai berikut, misalnya apa perbedaan antara (1) dan (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) Memuat chromedriver menggunakan webdriver Selenium. Dalam hal ini, Anda perlu mengunduh biner chromedriver, mengekstraknya di suatu tempat di PC Anda dan mengatur jalur ke driver ini. (Kompatibel dengan Selenium 4.x dan yang lebih lama.)
- (2) Jalankan Chrome menggunakan webdriver-manager. Saat Anda menggunakan paket webdriver-manager, tidak perlu mengunduh biner chromedriver secara terpisah.
Manajer instalasi:
pip install webdriver-manager
Gunakan dengan Chrome
selenium 3
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
selenium 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()))
- Untuk detail lebih lanjut, lihat https://pypi.org/project/webdriver-manager/.
4. google-chrome telah diperbarui. Di mana saya dapat mengunduh ChromeDriver dan bagaimana cara menginstalnya?
- 4 Juni 2024 versi terbaru Chrome adalah " 125.0.6422.142 "
4.1. Buka halaman Unduh ChromeDriver.
- Unduh Driver Chrome dengan versi yang sama dengan Chrome Anda yang diperbarui.
- Klik tautan di dasbor ketersediaan Chrome untuk Pengujian: https://chromedriver.chromium.org/downloads
- https://googlechromelabs.github.io/chrome-for-testing/ untuk menemukan Driver Chrome yang cocok dengan versi Chrome Anda yang diperbarui.
4.2. Unduh ChromeDriver.
- Unduh versi Driver Chrome yang cocok dengan Chrome Anda.
- 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. Instal ChromeDrivernya.
- Karena Driver Chrome adalah file biner, tidak ada proses instalasi terpisah.
- Ekstrak arsip zip dan salin file chromedriver ke direktori tempat Driver Chrome seharusnya berada.
Untuk Mac, lokasi default untuk chromedriver adalah /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
Jika Anda ingin menempatkannya di direktori khusus:
- Tempatkan file 'chromedriver' di lokasi yang Anda inginkan. Misalnya: '/Pengguna/mymac/data/chromedrv/chromedriver'.
4.4. Contoh Penggunaan dengan 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. Bagaimana cara mencegah paket 'google-chrome' diperbarui secara otomatis di Ubuntu?
- Untuk mencegah Google Chrome memperbarui secara otomatis di Ubuntu, Anda dapat menggunakan penyematan paket atau tanda apt untuk menyimpan paket Chrome. Namun, hal ini umumnya tidak disarankan
- Perlu diingat bahwa menonaktifkan pembaruan otomatis Chrome dapat membahayakan keamanan. Biasanya disarankan untuk mengelola pembaruan dengan benar demi keuntungan keamanan dan fungsionalitas.
Menggunakan tanda tepat:
- Pegang paket untuk mencegah pembaruan:
# apt-mark hold google-chrome-stable
google-chrome-stable set on hold.
- Untuk mengizinkan pembaruan lagi, lepaskan penangguhan:
# apt-mark unhold google-chrome-stable
Canceled hold on google-chrome-stable.