Amalan Terbaik untuk Menunggu dalam Selenium-WebDriver
Apabila bekerja dengan Selenium-WebDriver, selalunya perlu melaksanakan menunggu untuk memastikan elemen dimuatkan sebelum melakukan tindakan ke atasnya. Dua pendekatan biasa ialah penantian tersirat dan eksplisit.
Penantian Tersirat:
Penantian tersirat ditetapkan menggunakan driver.manage().timeouts().implicitlyWait(2, TimeUnit .SAAT);. Ia mempengaruhi semua operasi pemandu secara global, memberikan tempoh tamat masa untuk semua percubaan mencari elemen. Pendekatan ini boleh menjadi mudah untuk senario di mana terdapat masa muat UI yang tidak dapat diramalkan, tetapi ia boleh mengakibatkan masa menunggu yang lebih lama secara keseluruhan.
Penantian Eksplisit:
Penantian eksplisit, seperti sebagai WebDriverWait.until(condition-that-finds-the-element);, dilaksanakan pada elemen atau syarat tertentu. Ia menyediakan pendekatan yang lebih disasarkan, membenarkan masa menunggu yang tepat dan keupayaan untuk menentukan keadaan seperti kehadiran unsur atau keterlihatan.
Perbandingan:
Feature | Implicit Waits | Explicit Waits |
---|---|---|
Global Scope | Yes | No |
Customization | Limited | Highly customizable |
Precision | Less precise | Precise |
Pendekatan Disyorkan:
Dalam kebanyakan situasi, disyorkan untuk menggunakan penantian eksplisit (khususnya fluentWait) dan bukannya penantian tersirat. FluentWait ialah sejenis penantian eksplisit yang menyediakan pilihan penyesuaian lanjutan, termasuk tamat masa yang fleksibel, selang pengundian dan pengendalian pengecualian.
Contoh FluentWait:
<code class="java">public WebElement fluentWait(final By locator) { Wait<WebDriver> wait = new FluentWait<WebDriver>(driver) .withTimeout(30, TimeUnit.SECONDS) .pollingEvery(5, TimeUnit.SECONDS) .ignoring(NoSuchElementException.class); WebElement foo = wait.until(new Function<WebDriver, WebElement>() { public WebElement apply(WebDriver driver) { return driver.findElement(locator); } }); return foo; }</code>
Oleh menggunakan fluentWait, anda boleh menetapkan tamat masa khusus untuk carian elemen dan mengelakkan masa menunggu global yang tidak perlu yang boleh melambatkan ujian anda.
Atas ialah kandungan terperinci Penantian Tersirat vs. Eksplisit dalam Selenium-WebDriver: Mana Yang Perlu Anda Pilih?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!