Cara Menemukan Elemen dengan Teks dengan Selenium

How Find Element Text With Selenium

Menemukan dan memilih elemen dari halaman web adalah kunci untuk web scraping dengan Selenium. Anda dapat memilih elemen menggunakan nama tag, ID, nama kelas, pemilih XPath, pemilih CSS, dll. di Selenium. Anda juga dapat memilih elemen yang memiliki teks tertentu dengan Selenium. Ini berguna untuk memilih tautan dan tombol dari halaman web dengan mudah. Bahkan jika struktur halaman berubah, selama teks elemen halaman web tetap sama, pemilih Anda akan berfungsi dengan baik. Ini adalah keuntungan memilih tautan dan tombol menggunakan teks di Selenium.

Pada artikel ini, saya akan menunjukkan kepada Anda bagaimana menemukan dan memilih elemen dari halaman web menggunakan teks di Selenium dengan perpustakaan Selenium python. Jadi, mari kita mulai.



Prasyarat:

Untuk mencoba perintah dan contoh artikel ini, Anda harus memiliki:



  1. Distribusi Linux (sebaiknya Ubuntu) diinstal pada komputer Anda.
  2. Python 3 diinstal di komputer Anda.
  3. PIP 3 diinstal pada komputer Anda.
  4. Python virtualenv paket yang diinstal pada komputer Anda.
  5. Browser web Mozilla Firefox atau Google Chrome terpasang di komputer Anda.
  6. Harus tahu cara menginstal Firefox Gecko Driver atau Chrome Web Driver.

Untuk memenuhi persyaratan 4, 5, dan 6, baca artikel saya Pengantar Selenium dengan Python 3 .



Anda dapat menemukan banyak artikel tentang topik lain di LinuxHint.com . Pastikan untuk memeriksanya jika Anda memerlukan bantuan.

Menyiapkan Direktori Proyek:

Untuk menjaga semuanya tetap teratur, buat direktori proyek baru selenium-teks-pilih/ sebagai berikut:

$mkdir -pvselenium-teks-pilih/pengemudi



Navigasikan ke selenium-teks-pilih/ direktori proyek sebagai berikut:

$CDselenium-teks-pilih/

Buat lingkungan virtual Python di direktori proyek sebagai berikut:

$virtualenv .venv

Aktifkan lingkungan virtual sebagai berikut:

$sumber.venv/NS/mengaktifkan

Instal pustaka Selenium Python menggunakan PIP3 sebagai berikut:

$pip3 instal selenium

Unduh dan instal semua driver web yang diperlukan di pengemudi/ direktori proyek. Saya telah menjelaskan proses mengunduh dan menginstal driver web di artikel saya Pengantar Selenium dengan Python 3 .

Menemukan Elemen dengan Teks:

Di bagian ini, saya akan menunjukkan kepada Anda beberapa contoh menemukan dan memilih elemen halaman web berdasarkan teks dengan pustaka Selenium Python.

Saya akan mulai dengan contoh paling sederhana dalam memilih elemen halaman web dengan teks, memilih tautan dari halaman web.

Di halaman login facebook.com, kami memiliki tautan Lupa akun? Seperti yang Anda lihat pada tangkapan layar di bawah ini. Mari pilih tautan ini dengan Selenium.

Buat skrip Python baru ex01.py dan ketik baris kode berikut di dalamnya.

dariseleniumimporwebdriver
dariselenium.webdriver.umum.kunci imporKunci
dariselenium.webdriver.umum.oleh imporOleh
dari waktu importidur
peramban=webdriver.Chrome(executable_path='./driver/chromedriver')
peramban.Dapatkan('https://www.facebook.com/')
lupaAkunLink=peramban.temukan_elemen(Oleh.XPATH, '
//*[text()='Lupa akun?']'
)
lupaAkunLink.send_keys(Kunci.MEMASUKI)

Setelah selesai, simpan ex01.py skrip piton.

Baris 1-4 mengimpor semua komponen yang diperlukan ke dalam program Python.

Baris 6 membuat Chrome peramban objek menggunakan chromedriver biner dari pengemudi/ direktori proyek.

Baris 8 memberitahu browser untuk memuat situs web facebook.com.

Baris 10 menemukan tautan yang memiliki teks Lupa akun? Menggunakan pemilih XPath. Untuk itu, saya telah menggunakan pemilih XPath //*[text()='Lupa akun?'] .

Pemilih XPath dimulai dengan //, yang berarti elemen dapat berada di mana saja pada halaman. NS * simbol memberitahu Selenium untuk memilih tag apa saja ( ke atau P atau menjangkau, dll.) yang cocok dengan kondisi di dalam tanda kurung siku [] . Di sini, syaratnya adalah, elemen teks sama dengan Lupa akun?

NS teks() Fungsi XPath digunakan untuk mendapatkan teks dari suatu elemen.

Sebagai contoh, teks() kembali Halo Dunia jika memilih elemen HTML berikut.

< ke href='http://dummysite.com'>Halo Dunia</ ke >

Baris 11 mengirimkan tekan tombol ke Lupa akun? Tautan.

Jalankan skrip Python ex01.py dengan perintah berikut:

$ python ex01.py

Seperti yang Anda lihat, browser web menemukan, memilih, dan menekan tombol kunci pada Lupa akun? Tautan.

NS Lupa akun? Tautan membawa browser ke halaman berikut.

Dengan cara yang sama, Anda dapat dengan mudah mencari elemen yang memiliki nilai atribut yang Anda inginkan.

Di sini, Gabung tombol adalah memasukkan elemen yang memiliki nilai atribut Gabung . Mari kita lihat bagaimana memilih elemen ini berdasarkan teks.

Buat skrip Python baru ex02.py dan ketik baris kode berikut di dalamnya.

dariseleniumimporwebdriver
dariselenium.webdriver.umum.kunci imporKunci
dariselenium.webdriver.umum.oleh imporOleh
dari waktu importidur
peramban=webdriver.Chrome(executable_path='./driver/chromedriver')
peramban.Dapatkan('https://www.facebook.com/')
tidur(5)
masukan email=peramban.temukan_elemen(Oleh.XPATH, '//input[@id='email']')
masukan kata sandi=peramban.temukan_elemen(Oleh.XPATH, '//input[@id='pass']')
tombol masuk=peramban.temukan_elemen(Oleh.XPATH, '//*[@value='Masuk']')
masukan emailsend_keys(' [dilindungi email] ')
tidur(5)
masukan kata sandisend_keys('pass-rahasia')
tidur(5)
tombol masuk.send_keys(Kunci.MEMASUKI)

Setelah selesai, simpan ex02.py skrip piton.

Baris 1-4 mengimpor semua komponen yang diperlukan.

Baris 6 membuat Chrome peramban objek menggunakan chromedriver biner dari pengemudi/ direktori proyek.

Baris 8 memberitahu browser untuk memuat situs web facebook.com.

Semuanya terjadi begitu cepat setelah Anda menjalankan skrip. Jadi, saya telah menggunakan tidur() berfungsi berkali-kali dalam ex02.py untuk menunda perintah browser. Dengan cara ini, Anda dapat mengamati bagaimana semuanya bekerja.

Baris 11 menemukan kotak teks input email dan menyimpan referensi elemen di masukan email variabel.

Baris 12 menemukan kotak teks input email dan menyimpan referensi elemen di masukan email variabel.

Baris 13 menemukan elemen input yang memiliki atribut nilai dari Gabung menggunakan pemilih XPath. Untuk itu, saya telah menggunakan pemilih XPath //*[@value='Login'] .

Pemilih XPath dimulai dengan // . Ini berarti elemen dapat berada di mana saja pada halaman. NS * simbol memberitahu Selenium untuk memilih tag apa saja ( memasukkan atau P atau menjangkau, dll.) yang cocok dengan kondisi di dalam tanda kurung siku [] . Di sini, kondisinya adalah, atribut elemen nilai adalah sama dengan Gabung .

Baris 15 mengirimkan input[dilindungi email]ke kotak teks input email, dan baris 16 menunda operasi berikutnya.

Baris 18 mengirimkan input secret-pass ke kotak teks input kata sandi, dan baris 19 menunda operasi berikutnya.

Jalur 21 mengirimkan tekan tombol ke tombol login.

Jalankan ex02.py Script Python dengan perintah berikut:

$ python3 ex02.py

Seperti yang Anda lihat, kotak teks email dan kata sandi diisi dengan nilai dummy kami, dan Gabung tombol ditekan.

Kemudian halaman menavigasi ke halaman berikut.

Menemukan Elemen dengan Teks Sebagian:

Di bagian sebelumnya, saya telah menunjukkan kepada Anda bagaimana menemukan elemen dengan teks tertentu. Di bagian ini, saya akan menunjukkan kepada Anda bagaimana menemukan elemen dari halaman web menggunakan teks parsial.

Dalam contoh, ex01.py , Saya telah mencari elemen tautan yang memiliki teks Lupa akun? . Anda dapat mencari elemen tautan yang sama menggunakan teks parsial seperti lupa acc . Untuk melakukan itu, Anda dapat menggunakan mengandung() Fungsi XPath, seperti yang ditunjukkan pada baris 10 dari ex03.py . Kode lainnya sama dengan di ex01.py . Hasilnya akan sama.

Di baris 10 dari ex03.py , kondisi pemilihan menggunakan berisi (sumber, teks) fungsi XPath. Fungsi ini membutuhkan 2 argumen, sumber, dan teks .

NS mengandung() fungsi memeriksa apakah teks diberikan dalam argumen kedua sebagian cocok dengan sumber nilai dalam argumen pertama.

Sumbernya bisa berupa teks elemen ( teks() ) atau nilai atribut dari elemen ( @attr_name ).

Di dalam ex03.py , teks elemen diperiksa.

Fungsi XPath lain yang berguna untuk menemukan elemen dari halaman web menggunakan teks parsial adalah dimulai-dengan(sumber, teks) . Fungsi ini memiliki argumen yang sama dengan mengandung() fungsi dan digunakan dengan cara yang sama. Satu-satunya perbedaan adalah bahwa dimulai dengan() fungsi memeriksa apakah argumen kedua teks adalah string awal dari argumen pertama sumber .

Saya telah menulis ulang contohnya ex03.py untuk mencari elemen yang teksnya dimulai dengan Terlupakan, seperti yang Anda lihat di baris 10 dari ex04.py . Hasilnya sama seperti di ex02 dan ex03.py .

Saya juga telah menulis ulang ex02.py sehingga mencari elemen input yang nilai atribut dimulai dengan Catatan, seperti yang Anda lihat di baris 13 dari ex05.py . Hasilnya sama seperti di ex02.py .

Kesimpulan:

Pada artikel ini, saya telah menunjukkan kepada Anda bagaimana menemukan dan memilih elemen dari halaman web dengan teks dengan perpustakaan Selenium Python. Sekarang, Anda seharusnya dapat menemukan elemen dari halaman web dengan teks tertentu atau sebagian teks dengan pustaka Selenium Python.