Dalam siaran ini, kami akan meneroka pelbagai jenis penantian dalam Selenium 4, termasuk penambahbaikan baharu dan amalan terbaik untuk penggunaannya.
Jenis Penantian dalam Selenium 4
Selenium 4 menyediakan tiga jenis penantian utama:
Jom selami setiap satu!
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
Dalam contoh ini, Selenium akan menunggu sehingga 10 saat untuk elemen muncul sebelum melontar NoSuchElementException. Penantian dikenakan pada setiap carian elemen sepanjang sesi.
Kebaikan:
Mudah untuk dilaksanakan.
Sesuai untuk projek mudah.
Keburukan:
Boleh memperlahankan pelaksanaan ujian kerana ia menggunakan penantian secara global, walaupun ia tidak diperlukan.
Boleh membawa kepada tingkah laku ujian yang tidak dapat diramalkan apabila digunakan dengan jenis menunggu yang lain.
Contoh Kod:
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(15)); WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("example")));
Dalam contoh ini, WebDriver akan menunggu sehingga 15 saat sehingga elemen kelihatan. Jika elemen muncul sebelum 15 saat, penantian akan tamat lebih awal.
Syarat Penantian Eksplisit Biasa:
visibilityOfElementLocated()
elementToBeClickable()
presenceOfElementLocated()
alertIsPresent()
Kelebihan:
Sangat boleh disesuaikan dan lebih cekap daripada penantian tersirat.
Hanya menunggu apabila syarat tertentu diperlukan.
Keburukan:
Memerlukan lebih banyak kod, yang boleh meningkatkan kerumitan.
Menguruskan berbilang penantian eksplisit boleh menjadi rumit dalam projek besar.
Wait<WebDriver> fluentWait = new FluentWait<>(driver) .withTimeout(Duration.ofSeconds(20)) .pollingEvery(Duration.ofMillis(500)) .ignoring(NoSuchElementException.class); WebElement element = fluentWait.until(driver -> driver.findElement(By.id("example")));
Di sini, WebDriver akan menyemak elemen setiap 500 milisaat dan menunggu sehingga 20 saat sebelum tamat masa. Ia juga akan mengabaikan NoSuchElementException pada masa ini.
Kebaikan:
Memberi lebih fleksibiliti dan kawalan ke atas cara menunggu dikendalikan.
Membenarkan penyesuaian selang pengundian dan pengendalian pengecualian.
Keburukan:
Boleh menjadi lebih kompleks untuk disediakan dan difahami.
Penyesuaian yang berlebihan boleh menyebabkan kod mengelirukan dan sukar diselenggara.
Penambahbaikan dalam Selenium 4 Waits
Selenium 4 memperkenalkan beberapa penambahbaikan, terutamanya dalam cara anda menguruskan penantian:
Sintaks Lebih Baik: Selenium 4 menggunakan Tempoh berbanding TimeUnit sebelumnya, menjadikannya lebih intuitif dan boleh dibaca.
Pencari Relatif: Anda kini boleh menunggu elemen yang berkaitan dengan elemen lain (cth., di sebelah kiri, dekat, dll.).
WebDriverWait Dipertingkat: Kelas WebDriverWait dalam Selenium 4 lebih diselaraskan dan lebih mudah digunakan dengan sintaks moden.
Amalan Terbaik untuk Menggunakan Waits dalam Selenium 4
Gunakan Penantian Eksplisit Daripada Penantian Tersirat: Untuk kawalan dan prestasi yang lebih baik, pilih penantian eksplisit, terutamanya dalam senario yang rumit.
Elakkan Pencampuran Penantian Tersirat dan Eksplisit: Menggunakan kedua-duanya boleh menyebabkan tingkah laku yang tidak dapat diramalkan dan peningkatan masa menunggu.
Tetapkan Nilai Tamat Masa Yang Munasabah: Elakkan menetapkan menunggu lama yang tidak perlu. Analisis gelagat aplikasi anda untuk menentukan masa menunggu yang sesuai.
Gunakan Fluent Waits untuk Elemen Dinamik: Jika elemen sangat dinamik, pertimbangkan untuk menggunakan fasih menunggu dengan selang pengundian untuk mengurangkan menunggu yang tidak perlu.
Kesimpulan
Pengendalian menunggu dengan berkesan dalam Selenium 4 adalah penting untuk menulis ujian automatik yang stabil dan boleh dipercayai. Memahami masa dan cara menggunakan penantian tersirat, eksplisit dan lancar boleh meningkatkan keteguhan suite ujian anda. Dengan peningkatan dalam Selenium 4, anda mempunyai alat yang lebih berkuasa untuk mengurus isu penyegerakan.
Atas ialah kandungan terperinci Memahami Penantian dalam Selenium 4. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!