Selenium

Cara Mencari Elemen dengan Teks dengan Selenium

Cara Mencari Elemen dengan Teks dengan Selenium
Mencari dan memilih elemen dari laman web adalah kunci untuk mengikis web dengan Selenium. Anda boleh memilih elemen menggunakan nama tag, ID, nama kelas, pemilih XPath, pemilih CSS, dll. di Selenium. Anda juga boleh memilih elemen yang mempunyai teks khusus dengan Selenium. Ini berguna untuk memilih pautan dan butang dari laman web dengan mudah. Walaupun struktur halaman berubah, selagi teks elemen halaman web tetap sama, pemilih anda harus berfungsi dengan baik. Inilah kelebihan memilih pautan dan butang menggunakan teks di Selenium.

Dalam artikel ini, saya akan menunjukkan kepada anda cara mencari dan memilih elemen dari laman web menggunakan teks di Selenium dengan perpustakaan Selenium python. Oleh itu, mari kita mulakan.

Prasyarat:

Untuk mencuba perintah dan contoh artikel ini, anda mesti mempunyai:

  1. Sebaran Linux (sebaiknya Ubuntu) dipasang di komputer anda.
  2. Python 3 dipasang pada komputer anda.
  3. PIP 3 dipasang pada komputer anda.
  4. Python virtualenv pakej yang dipasang di komputer anda.
  5. Penyemak imbas web Mozilla Firefox atau Google Chrome yang dipasang di komputer anda.
  6. Mesti tahu cara memasang Pemacu Firefox Gecko atau Pemandu Web Chrome.

Untuk memenuhi syarat 4, 5, dan 6, baca artikel saya Pengenalan Selenium di Python 3.

Anda boleh menemui banyak artikel mengenai topik lain di LinuxHint.com. Pastikan anda memeriksanya jika anda memerlukan bantuan.

Menyiapkan Direktori Projek:

Untuk memastikan semuanya teratur, buat direktori projek baru selenium-teks-pilih / seperti berikut:

$ mkdir -pv selenium-text-select / pemacu

Navigasi ke selenium-teks-pilih / direktori projek seperti berikut:

$ cd selenium-teks-pilih /

Buat persekitaran maya Python dalam direktori projek seperti berikut:

$ virtualenv .venv

Aktifkan persekitaran maya seperti berikut:

sumber $ .venv / bin / aktifkan

Pasang perpustakaan Selenium Python menggunakan PIP3 seperti berikut:

$ pip3 memasang selenium

Muat turun dan pasang semua pemacu web yang diperlukan di pemandu / direktori projek. Saya telah menerangkan proses memuat turun dan memasang pemacu web dalam artikel saya Pengenalan Selenium di Python 3.

Mencari Elemen mengikut Teks:

Pada bahagian ini, saya akan menunjukkan kepada anda beberapa contoh mencari dan memilih elemen halaman web dengan teks dengan perpustakaan Selenium Python.

Saya akan mulakan dengan contoh paling mudah memilih elemen halaman web dengan teks, memilih pautan dari laman web.

Di halaman log masuk facebook.com, kami mempunyai pautan Lupa akaun? Seperti yang anda lihat dalam tangkapan skrin di bawah. Mari pilih pautan ini dengan Selenium.

Buat skrip Python baru ex01.py dan taipkan baris kod berikut di dalamnya.

dari pemacu web import selenium
dari selenium.pemacu laman web.biasa.kunci import Kekunci
dari selenium.pemacu laman web.biasa.oleh import Oleh
dari waktu tidur import
penyemak imbas = pemacu web.Chrome (executable_path = "./ pemacu / pemacu kromedri ")
penyemak imbas.dapatkan ("https: // www.facebook.com / ")
lupaAccountLink = penyemak imbas.find_element (Oleh.XPATH, "
// * [text () = 'Lupa akaun?'] ")
lupaAccountLink.send_keys (Kekunci.MASUK)

Setelah selesai, simpan ex01.py Skrip Python.

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

Baris 6 membuat Chrome penyemak imbas objek menggunakan kromedriver binari dari pemandu / direktori projek.

Baris 8 memberitahu penyemak imbas memuatkan laman web facebook.com.

Baris 10 mencari pautan yang mempunyai teks Lupa akaun? Menggunakan pemilih XPath. Untuk itu, saya telah menggunakan pemilih XPath // * [text () = 'Lupa akaun?'].

Pemilih XPath bermula dengan //, yang bermaksud elemen boleh berada di mana sahaja di halaman. The * simbol memberitahu Selenium untuk memilih sebarang tag (a atau hlm atau jangka masa, dan lain-lain.) yang sepadan dengan keadaan di dalam tanda kurung []. Di sini, syaratnya, teks elemen sama dengan Lupa akaun?

The teks () Fungsi XPath digunakan untuk mendapatkan teks elemen.

Sebagai contoh, teks () kembali Hai dunia sekiranya memilih elemen HTML berikut.

Hai dunia

Baris 11 menghantar tekan kekunci ke Lupa akaun? Pautan.

Jalankan skrip Python ex01.py dengan arahan berikut:

$ python ex01.py

Seperti yang anda lihat, penyemak imbas web mencari, memilih, dan menekan kunci pada Lupa akaun? Pautan.

The Lupa akaun? Pautan membawa penyemak imbas ke halaman berikut.

Dengan cara yang sama, anda dapat dengan mudah mencari elemen yang mempunyai nilai atribut yang anda inginkan.

Di sini, Log masuk butang adalah input unsur yang mempunyai nilai atribut Log masuk. Mari lihat bagaimana memilih elemen ini mengikut teks.

Buat skrip Python baru ex02.py dan taipkan baris kod berikut di dalamnya.

dari pemacu web import selenium
dari selenium.pemacu laman web.biasa.kunci import Kekunci
dari selenium.pemacu laman web.biasa.oleh import Oleh
dari waktu tidur import
penyemak imbas = pemacu web.Chrome (executable_path = "./ pemacu / pemacu kromedri ")
penyemak imbas.dapatkan ("https: // www.facebook.com / ")
tidur (5)
e-melInput = penyemak imbas.find_element (Oleh.XPATH, "// input [@ id = 'email']")
kata laluanInput = penyemak imbas.find_element (Oleh.XPATH, "// input [@ id = 'lulus']")
loginButton = penyemak imbas.find_element (Oleh.XPATH, "// * [@ value = 'Log Masuk']")
Masukan e-mel.send_keys ('[dilindungi e-mel]')
tidur (5)
Masukkan kata laluan.send_keys ('rahsia-lulus')
tidur (5)
butang log masuk.send_keys (Kekunci.MASUK)

Setelah selesai, simpan ex02.py Skrip Python.

Baris 1-4 mengimport semua komponen yang diperlukan.

Baris 6 membuat Chrome penyemak imbas objek menggunakan kromedriver binari dari pemandu / direktori projek.

Baris 8 memberitahu penyemak imbas memuatkan laman web facebook.com.

Segala-galanya berlaku begitu cepat setelah anda menjalankan skrip. Jadi, saya telah menggunakan tidur () berfungsi berkali-kali di ex02.py kerana melambatkan arahan penyemak imbas. Dengan cara ini, anda dapat melihat bagaimana semuanya berfungsi.

Baris 11 menemui kotak teks input e-mel dan menyimpan rujukan elemen di Masukan e-mel pemboleh ubah.

Baris 12 menemui kotak teks input e-mel dan menyimpan rujukan elemen di Masukan e-mel pemboleh ubah.

Baris 13 mencari elemen input yang mempunyai atribut nilai daripada Log masuk menggunakan pemilih XPath. Untuk itu, saya telah menggunakan pemilih XPath // * [@ value = 'Log Masuk'].

Pemilih XPath bermula dengan //. Ini bermaksud elemen boleh berada di mana sahaja di halaman. The * simbol memberitahu Selenium untuk memilih sebarang tanda (input atau hlm atau jangka masa, dan lain-lain.) yang sepadan dengan keadaan di dalam tanda kurung []. Di sini, syaratnya adalah, atribut elemen nilai adalah sama dengan Log masuk.

Baris 15 menghantar input [dilindungi e-mel] ke kotak teks input e-mel, dan baris 16 menunda operasi seterusnya.

Baris 18 menghantar lulus rahsia input ke kotak teks input kata laluan, dan baris 19 menunda operasi seterusnya.

Talian 21 menghantar tekan kekunci ke butang log masuk.

Jalankan ex02.py Skrip Python dengan arahan berikut:

$ python3 ex02.py

Seperti yang anda lihat, kotak teks e-mel dan kata laluan dipenuhi dengan nilai palsu kami, dan Log masuk butang ditekan.

Kemudian halaman menavigasi ke halaman berikut.

Mencari Elemen mengikut Teks Separa:

Pada bahagian sebelumnya, saya telah menunjukkan kepada anda cara mencari elemen mengikut teks tertentu. Di bahagian ini, saya akan menunjukkan kepada anda cara mencari elemen dari laman web menggunakan teks separa.

Dalam contohnya, ex01.py, Saya telah mencari elemen pautan yang mempunyai teks Lupa akaun?. Anda boleh mencari elemen pautan yang sama menggunakan teks separa seperti Lupa acc. Untuk melakukannya, anda boleh menggunakan mengandungi () Fungsi XPath, seperti yang ditunjukkan pada baris 10 dari ex03.py. Selebihnya kodnya sama seperti di ex01.py. Hasilnya akan sama.

Dalam baris 10 dari ex03.py, syarat pemilihan menggunakan mengandungi (sumber, teks) Fungsi XPath. Fungsi ini mengambil 2 argumen, sumber, dan teks.

The mengandungi () fungsi memeriksa sama ada teks diberikan dalam hujah kedua sepadan dengan sumber nilai dalam hujah pertama.

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

Dalam ex03.py, teks elemen diperiksa.

Fungsi XPath lain yang berguna untuk mencari elemen dari laman web menggunakan teks separa adalah bermula dengan (sumber, teks). Fungsi ini mempunyai argumen yang sama dengan mengandungi () berfungsi dan digunakan dengan cara yang sama. Satu-satunya perbezaan adalah bahawa bermula dengan() fungsi memeriksa sama ada hujah kedua teks adalah rentetan permulaan bagi hujah pertama sumber.

Saya telah menulis semula contohnya ex03.py untuk mencari elemen di mana teks bermula Terlupa, seperti yang anda lihat di baris 10 dari ex04.py. Hasilnya sama seperti di ex02 dan ex03.py.

Saya juga telah menulis semula ex02.py sehingga ia mencari elemen input yang mana nilai atribut bermula dengan Log, seperti yang anda lihat di baris 13 dari ex05.py. Hasilnya sama seperti di ex02.py.

Kesimpulan:

Dalam artikel ini, saya telah menunjukkan kepada anda cara mencari dan memilih elemen dari laman web melalui teks dengan perpustakaan Selenium Python. Sekarang, anda seharusnya dapat mencari elemen dari halaman web dengan teks tertentu atau teks separa dengan perpustakaan Selenium Python.

Cara Membangunkan Permainan di Linux
Satu dekad yang lalu, tidak banyak pengguna Linux akan meramalkan bahawa sistem operasi kegemaran mereka suatu hari nanti akan menjadi platform permai...
Port Sumber Terbuka Mesin Permainan Komersial
Rekreasi enjin permainan sumber terbuka dan bebas platform boleh digunakan untuk bermain lama dan juga beberapa tajuk permainan yang baru-baru ini. Ar...
Permainan Perintah Terbaik untuk Linux
Baris perintah bukan hanya sekutu terbesar anda ketika menggunakan Linux-ia juga dapat menjadi sumber hiburan kerana anda dapat menggunakannya untuk m...