Rumah >Peranti teknologi >industri IT >Cara Menggunakan Selenium Webdriver untuk Ujian Penyemak Imbas Salib
Artikel ini pada asalnya diterbitkan di Lambdatest. Terima kasih kerana menyokong rakan kongsi yang membuat SitePoint mungkin.
Selenium adalah rangka kerja ujian automasi yang popular yang digunakan terutamanya untuk ujian penyemak imbas silang. Ia adalah sumber terbuka dan sesuai untuk mengautkan ujian aplikasi web di seluruh pelayar yang berbeza seperti Firefox, Chrome, Internet Explorer, dan Microsoft Edge. Selenium telah menjadi rangka kerja yang terkenal dan memberikan persaingan sengit kepada rangka kerja ujian lain seperti HP QTP (Professional Ujian Pantas) dan AKA HP UFT (Ujian Fungsi Bersatu). Tutorial ini untuk selenium webdriver akan membantu anda membangunkan pemahaman asas mengenai komponen selenium suite, seni bina selenium webdriver dan akan menunjukkan kepada anda bagaimana untuk menjalankan automasi untuk menguji laman web untuk keserasian penyemak imbas silang menggunakan selenium webdriver untuk Google Chrome, Mozilla Firefox dan Internet Explorer.Selenium adalah gabungan alat yang berbeza dan setiap alat memainkan peranan penting dalam mengautomasikan ujian web. Mari kita menyelam tutorial WebDriver.
Takeaways Key
Selenium Remote Control (RC)
Selenium IDE adalah plugin Firefox yang mudah dan ia digunakan untuk merakam dan skrip main balik. Walau bagaimanapun, selenium IDE hanya boleh digunakan untuk menulis skrip automasi untuk mengaut automatik kes penggunaan mudah. Selenium IDE tidak menyokong kenyataan bersyarat, pengendalian pengecualian, gelung, tangkapan tangkapan skrin, dan lain -lain untuk mengautomasikan kes penggunaan kompleks, majoriti pemaju dan penguji lebih suka memilih ujian skrip dan bukannya ujian rekod & replay. Suite Ujian Selenium terdiri daripada Kawalan Jauh Selenium (RC) atau Selenium Webdriver.
Selenium IDE tersedia untuk sistem operasi yang berbeza iaitu Windows, Linux, Mac OS, dan lain -lain. Selenium IDE untuk Firefox boleh dimuat turun di sini.
Untuk menguji senario kompleks, kawalan jauh Selenium (RC) boleh digunakan. Ia berdasarkan model pelayan klien yang memungkinkan untuk melaksanakan ujian pada penyemak imbas yang dikawal oleh pelayan. Terdapat perpustakaan pelanggan dalam bahasa pengaturcaraan yang berbeza yang memudahkan pemaju menulis kes ujian yang berkesan dalam bahasa pengaturcaraan di mana mereka selesa & mempunyai kepakaran. Sejak versi 2.25.0, RC mempunyai sokongan untuk Java, C#, Python, Perl, Ruby, dan lain -lain
Server Selenium adalah komponen teras Selenium RC. Beberapa ciri/tanggungjawab teras selenium RC adalah di bawah:
Seperti yang disebutkan sebelumnya, Selenium RC menyokong pelayar yang berbeza, tidak seperti Selenium IDE yang hanya tersedia untuk Mozilla Firefox. Kelemahan Selenium RC adalah bahawa ia tidak menyokong fungsi rekod & main balik yang boleh menjadi penting dalam automasi kes ujian di mana tugas berulang, terutama untuk ujian regresi. Sebelum melaksanakan ujian menggunakan Selenium RC, satu contoh pelayan Selenium RC harus dipanggil secara manual dan contoh itu harus berjalan sepanjang kitaran ujian anda.
Selenium WebDriverSelenium WebDriver secara langsung berkomunikasi dengan penyemak imbas, jadi ia tidak memerlukan komponen berasingan seperti pelayan Selenium. Ia menyokong bahasa pengaturcaraan teratas yang berguna untuk penguji perisian iaitu C#, Ruby, Java, Python, Perl, dan lain -lain. dilakukan. Anda boleh memuat turun Selenium WebDriver dari pautan yang disebutkan di bawah:
Ujian siri adalah baik semasa menguji kod yang terhad kepada beberapa pelayar, sistem operasi, atau peranti. Walau bagaimanapun, metodologi itu memalukan sekali ujian perlu dilakukan dalam persekitaran yang mempunyai pelbagai kombinasi. Di sinilah ujian selari boleh menjadi sangat berguna, kerana ia dapat mempercepatkan keseluruhan proses ujian. Ujian selari boleh membolehkan anda melakukan kes ujian yang sama di seluruh konfigurasi ujian yang berbeza, secara serentak. Anda juga boleh melaksanakan kes ujian yang berbeza dalam penyemak imbas yang sama. Terdapat lebih banyak ujian selari, tetapi itu boleh menyimpang tumpuan kami dari selenium webdriver.
Kembali ke Asas: Selenium Grid terutamanya digunakan untuk ujian selari kerana ia membantu menjalankan ujian pada mesin yang berbeza terhadap pelayar & sistem operasi yang berbeza, secara serentak. Ia melakukan kerja bersempena dengan Selenium RC. Contoh yang mempamerkan penggunaan selenium grid adalah di bawah:
<span>from selenium import webdriver </span><span>from selenium.webdriver.common.keys import Keys </span> desired_cap <span>= { </span><span>'platform' : 'win10', </span><span>'browserName' : 'chrome', </span><span>'version' : "67.0", </span><span>} </span> url <span>= "https://username:acsessToken@{LMABDA GRID URL}/wd/hub" </span> driver <span>= webdriver.Remote( </span> desired_capabilities<span>=desired_cap, </span> command_executor<span>= url </span><span>) </span> driver<span>.implicitly_wait(1) </span>driver<span>.get("http://www.google.com/") </span>driver<span>.quit() </span>
Lihatlah blok utama yang terdiri daripada seni bina selenium webdriver:
mari kita periksa setiap komponen dengan lebih terperinci.
Seperti yang disebutkan sebelumnya, pemaju boleh menggunakan selenium untuk menulis kod ujian dalam bahasa yang berbeza seperti C#, Java, Python, Perl, dan lain-lain. Sokongan pelbagai bahasa adalah mungkin disebabkan oleh perpustakaan klien selenium atau pengikat bahasa selenium. Sebagai contoh, jika anda menulis kod di Python, anda akan memerlukan perpustakaan pelanggan Python. Pemacu pelanggan Selenium untuk bahasa pengaturcaraan yang berbeza boleh dimuat turun dari sini.
JSON (JavaScript Object Notation) Protokol wayar memudahkan pemindahan data antara klien & pelayan. Ia adalah API berasaskan (Perwakilan Negeri Perwakilan) yang lain. Setiap penyemak imbas akan mempunyai pemandu penyemak imbas sendiri.
Pemandu penyemak imbas digunakan terutamanya untuk berkomunikasi dengan penyemak imbas. Oleh kerana logik dalaman penyemak imbas dan fungsinya tidak diturunkan, pemandu penyemak imbas memastikan lapisan 'enkapsulasi' yang diperlukan untuk memastikan butiran tahap pelaksanaan lebih abstrak. Setiap penyemak imbas mempunyai pemacu penyemak imbas yang sepadan.
Sejak pemandu penyemak imbas disediakan untuk pelayar popular seperti Chrome, Firefox, Internet Explorer, Safari, dan Microsoft Edge, anda boleh menggunakan mana -mana daripada mereka untuk melakukan ujian penyemak imbas silang. Harus diingat bahawa anda tidak boleh melakukan ujian penyemak imbas silang laman web pada pelayar yang pemandu penyemak imbasnya tidak tersedia secara terbuka.
Bilangan sesi selari yang boleh anda jalankan bergantung sepenuhnya pada sesi serentak yang anda pilih. Ujian selari boleh membantu anda memotong kitaran ujian anda secara drastik. Sebagai contoh, katakan anda mempunyai suite ujian yang mengambil masa 60 minit tanpa ujian selari. Sekarang, jika anda mempunyai 2 kesesuaian maka anda boleh menjalankan 2 ujian secara serentak, memangkas jumlah masa ujian anda hingga 30 minit. Begitu juga, jika anda mempunyai 3 kesesuaian maka jumlah ujian masa ujian lebih jauh hingga 20 minit. Gunakan kalkulator konkurensi lambdatest untuk mengira berapa sesi serentak yang anda perlukan mengikut suite ujian anda.
selenium webdriver dalam tindakan
Contoh WebDriver Firefox
di bawah adalah kod sampel yang menggunakan selenium, firefox webdriver untuk membuka laman web:
<span>from selenium import webdriver </span><span>from selenium.webdriver.common.keys import Keys </span> desired_cap <span>= { </span><span>'platform' : 'win10', </span><span>'browserName' : 'chrome', </span><span>'version' : "67.0", </span><span>} </span> url <span>= "https://username:acsessToken@{LMABDA GRID URL}/wd/hub" </span> driver <span>= webdriver.Remote( </span> desired_capabilities<span>=desired_cap, </span> command_executor<span>= url </span><span>) </span> driver<span>.implicitly_wait(1) </span>driver<span>.get("http://www.google.com/") </span>driver<span>.quit() </span>
mari kita berjalan melalui kod. Sebelum kita melakukan apa -apa tindakan, semua modul yang diperlukan diimport menggunakan pernyataan ' import [LINES 2 ~ 4]. Dalam kod ujian, kami menggunakan Firefox Webdriver sejak ujian dilakukan terhadap pelayar Firefox [baris 7]. Dalam kod, FF_Driver adalah pemegang webdriver yang akan digunakan untuk melakukan sebarang interaksi dengan penyemak imbas Firefox. Sekiranya anda tidak memasang WebDriver atau anda cuba menggunakan penyemak imbas yang tidak ada sokongan (melalui WebDriver), ia akan memberikan ralat di bawah:
selenium.common.exceptions.WebDriverException: Mesej: 'Operadriver' boleh dilaksanakan perlu berada di jalan.
Mesej ralat dipaparkan apabila kami cuba memuatkan WebDriver untuk Pelayar Opera (tanpa webdriver yang dipasang pada mesin). Untuk menghilangkan kesilapan, anda harus memasang webdriver untuk opera.
Setelah semua operasi pada penyemak imbas selesai, ff_driver.close () dipanggil untuk melakukan pembersihan dan sumber yang diperlukan.
3
Contoh WebDriver Chrome
<span>from selenium import webdriver </span><span>from selenium.webdriver.common.keys import Keys </span> desired_cap <span>= { </span><span>'platform' : 'win10', </span><span>'browserName' : 'chrome', </span><span>'version' : "67.0", </span><span>} </span> url <span>= "https://username:acsessToken@{LMABDA GRID URL}/wd/hub" </span> driver <span>= webdriver.Remote( </span> desired_capabilities<span>=desired_cap, </span> command_executor<span>= url </span><span>) </span> driver<span>.implicitly_wait(1) </span>driver<span>.get("http://www.google.com/") </span>driver<span>.quit() </span>
Setakat ini dalam tutorial WebDriver Selenium kami, kami telah menunjukkan ujian penyemak imbas silang menggunakan WebDriver Webdriver & Chrome Firefox. Dalam bahagian ini, kita melihat perubahan yang diperlukan sekiranya anda menggunakan pelayar Chrome untuk ujian. Anda harus memuat turun WebDriver Internet Explorer yang betul (32 bit/64 bit) dari sini atau di sini. Tampal internetexplorerdriver.exe Di lokasi di mana anda telah memasang python (dalam kes kami, ia adalah laluan pemasangan lalai iaitu C: python27scripts) atau mana -mana lokasi lain pilihan anda. Jika anda menyalin WebDriver InternetExplorer di jalan di mana Python boleh dilaksanakan, anda tidak perlu menyebut 'jalan mutlak' semasa memuatkan pemacu web [baris 7]. Dalam kes lain, anda perlu menentukan jalan mutlak [baris 9]. Berikut adalah coretan kod, dengan perubahan (diperlukan untuk IE WebDriver), diserlahkan dalam warna yang berbeza:
<span># Import the necessary modules for development </span><span>import time </span><span>import unit test </span><span>from selenium import web driver </span> <span># Invoke a new Firefox Instance </span>ff_driver <span>= webdriver.Firefox() </span> <span># Blocking wait of 30 seconds in order to locate the element </span>ff_driver<span>.implicitly_wait(30) </span>ff_driver<span>.maximize_window() </span> <span># Open the required page </span>ff_driver<span>.get("http://www.lambdatest.com") </span> <span># Sleep for 10 seconds in order to see the results </span>time<span>.sleep(10) </span> <span># Close the Browser instance </span>ff_driver<span>.close() </span>Pada akhirnya, dalam tutorial selenium webdriver kami, kami akan melihat contoh lain di mana kami menggunakan modul ActionChains yang digunakan untuk mengautomasikan interaksi tahap rendah seperti pergerakan tetikus, pergerakan butang, interaksi menu konteks, dan lain -lain untuk memastikan yang mantap Reka bentuk UI. Maklumat lanjut mengenai ActionChains boleh didapati di sini.
<span># Import the necessary modules for development </span><span>import time </span><span>import unit test </span><span>from selenium import web driver </span> <span># Invoke a new Chrome Instance </span>ff_driver <span>= webdriver.Chrome() </span> <span># Blocking wait of 30 seconds in order to locate the element </span>ff_driver<span>.implicitly_wait(30) </span>ff_driver<span>.maximize_window() </span> <span># Open the required page </span>ff_driver<span>.get("http://www.lambdatest.com") </span> <span># Sleep for 10 seconds in order to see the results </span>time<span>.sleep(10) </span> <span># Close the Browser instance </span>ff_driver<span>.close() </span>Seperti yang dilihat dalam kod contoh di atas, kami mengekalkan kod untuk membuat contoh WebDriver Firefox [Lines 9 ~ 16]. Terdapat beberapa modul baru yang diimport - Actionchains and Keys. Sebaik sahaja laman web yang dikehendaki iaitu https://www.lambdatest.com/ dibuka oleh penyemak imbas, operasi carian dilakukan dengan melihat teks pautan (menggunakan kaedah find_element_by_link_text). Dalam contoh kami, teks pautan yang dicari di laman web adalah 'sokongan' [baris 20 ~ 22].
Setelah kriteria carian ditemui, operasi (klik Ctrl) dilakukan, dengan itu membuka halaman itu dalam 'tab baru' [baris 26 ~ 30]. Modul ActionChains digunakan untuk melaksanakan operasi itu. Output di bawah:
kami telah menggunakan tindakan aksi kerana ia sesuai untuk contoh yang kami paparkan di atas. Anda boleh melihat modul yang berbeza di bawah modul WebDriver Selenium (untuk Python) di sini. Walaupun kami telah menggunakan bahasa Python untuk pelaksanaan, anda boleh menggunakan bahasa pengaturcaraan (C#, Java, Perl, Ruby, PHP) pilihan anda.
Webdriver Tempatan-Pendekatan Tidak-So-Scalable
Penyelesaian yang lebih baik adalah untuk memanfaatkan keupayaan platform seperti Lambdatest di mana anda boleh melakukan ujian silang pelayar di awan. Menggunakan Lambdatest, anda boleh mengesahkan laman web anda di 2000 pelayar, sistem operasi, dan konfigurasi peranti yang berbeza. Untuk memulakan, anda perlu membuat akaun di Lambdatest. Oleh kerana anda akan menggunakan WebDriver Jauh (menggunakan Selenium Grid pada Lambdatest) untuk menguji aplikasi web anda, anda harus membuat nota mengenai nama pengguna dan kunci akses dari profil Lambdatest anda.
Skrip Selenium Menggunakan Webdriver Jauh dengan LambdatestSebaik sahaja anda log masuk ke Lambdatest, anda harus menjana keupayaan yang diperlukan oleh nod dengan melawat Penjana Keupayaan Lambdatest. Pilih bahasa pengaturcaraan pilihan anda (dalam kes kami ia adalah Python) dan kombinasi OS/penyemak imbas yang sesuai. Anda boleh mengaktifkan ciri -ciri rakaman tangkapan skrin dan video semasa menetapkan keupayaan. Seperti yang ditunjukkan di bawah, keperluan kami adalah ujian yang harus dilaksanakan pada Firefox (versi 64.0) yang dipasang pada mesin Windows 10. Keupayaan untuk keperluan adalah di bawah:
di bawah adalah tangkapan skrin dari Penjana Keupayaan Lambdatest:
<span>from selenium import webdriver </span><span>from selenium.webdriver.common.keys import Keys </span> desired_cap <span>= { </span><span>'platform' : 'win10', </span><span>'browserName' : 'chrome', </span><span>'version' : "67.0", </span><span>} </span> url <span>= "https://username:acsessToken@{LMABDA GRID URL}/wd/hub" </span> driver <span>= webdriver.Remote( </span> desired_capabilities<span>=desired_cap, </span> command_executor<span>= url </span><span>) </span> driver<span>.implicitly_wait(1) </span>driver<span>.get("http://www.google.com/") </span>driver<span>.quit() </span>
<span>from selenium import webdriver </span><span>from selenium.webdriver.common.keys import Keys </span> desired_cap <span>= { </span><span>'platform' : 'win10', </span><span>'browserName' : 'chrome', </span><span>'version' : "67.0", </span><span>} </span> url <span>= "https://username:acsessToken@{LMABDA GRID URL}/wd/hub" </span> driver <span>= webdriver.Remote( </span> desired_capabilities<span>=desired_cap, </span> command_executor<span>= url </span><span>) </span> driver<span>.implicitly_wait(1) </span>driver<span>.get("http://www.google.com/") </span>driver<span>.quit() </span>
@hub.lambdatest.com/wd/hub adalah persediaan grid selenium pada lambdatest di mana ujian akan dilaksanakan. Untuk tujuan pengesahan pengguna, user_name (digunakan untuk pendaftaran pada lambdatest) & app_key (akses-token) dilampirkan ke URL grid. Rentetan yang disatukan membentuk remote_url. Sekarang anda sedar tentang API Webdriver Remote dan Generator Keupayaan, mari kita port contoh terdahulu kami untuk memenuhi keperluan ini.
PARALLEL_TEST_EXAMPLE-1.PY
<span># Import the necessary modules for development </span><span>import time </span><span>import unit test </span><span>from selenium import web driver </span> <span># Invoke a new Firefox Instance </span>ff_driver <span>= webdriver.Firefox() </span> <span># Blocking wait of 30 seconds in order to locate the element </span>ff_driver<span>.implicitly_wait(30) </span>ff_driver<span>.maximize_window() </span> <span># Open the required page </span>ff_driver<span>.get("http://www.lambdatest.com") </span> <span># Sleep for 10 seconds in order to see the results </span>time<span>.sleep(10) </span> <span># Close the Browser instance </span>ff_driver<span>.close() </span>mari kita buat panduan kod, terutamanya perubahan utama:
Terdapat pelbagai pilihan pada panel output yang boleh menjadi instrumental semasa debugging. Beberapa pilihan utama adalah di bawah.
Pengecualian - menyenaraikan pengecualian yang ditemui semasa pelaksanaan kod ujian.
ujian selari - mempercepat kitaran ujian anda
3 Bersama dengan contoh sebelumnya (paralel_test_example-1.py), kami melaksanakan ujian kedua (paralel_test_example-2.py) serentak dengannya.
PARALLEL_TEST_EXAMPLE-2.PY
<span>from selenium import webdriver </span><span>from selenium.webdriver.common.keys import Keys </span> desired_cap <span>= { </span><span>'platform' : 'win10', </span><span>'browserName' : 'chrome', </span><span>'version' : "67.0", </span><span>} </span> url <span>= "https://username:acsessToken@{LMABDA GRID URL}/wd/hub" </span> driver <span>= webdriver.Remote( </span> desired_capabilities<span>=desired_cap, </span> command_executor<span>= url </span><span>) </span> driver<span>.implicitly_wait(1) </span>driver<span>.get("http://www.google.com/") </span>driver<span>.quit() </span>
Jalankan dua ujian selari pada dua terminal yang berbeza dengan menggunakan perintah python.
Kesimpulan
Soalan Lazim (Soalan Lazim) di Selenium Webdriver untuk ujian silang penyemak imbas
Selenium WebDriver Menyediakan antara muka amaran untuk mengendalikan tingkap atau peringatan pop timbul. Anda boleh beralih kepada amaran menggunakan kaedah switchto (). Alert (), dan kemudian gunakan kaedah Accept (), menolak (), getText (), atau sendKeys () untuk berinteraksi dengan amaran. Ingatlah untuk beralih ke tetingkap utama selepas mengendalikan amaran.
Bagaimana saya boleh mengendalikan kuki menggunakan selenium webdriver? untuk berinteraksi dengan kuki. Anda boleh menggunakan kaedah addCookie () untuk menambah kuki, kaedah getCookeneded () untuk mendapatkan kuki tertentu, kaedah getCookies () untuk mendapatkan semua cookies, dan deletecookie (), deleteCookiNamed (), atau deleteallCookies () kaedah untuk Padam cookies.
Mengendalikan panggilan AJAX di selenium webdriver boleh menjadi rumit kerana mereka tidak segerak dan boleh mengambil sedikit masa untuk mendapatkan data. Anda boleh menggunakan tunggu eksplisit dengan jangkaan yang dijangkakan untuk menunggu sehingga panggilan ajax selesai dan data dimuatkan.
Atas ialah kandungan terperinci Cara Menggunakan Selenium Webdriver untuk Ujian Penyemak Imbas Salib. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!