Rumah >Java >javaTutorial >Adakah Terdapat Fungsi Selenium Generik untuk Mengesahkan Pemuatan Halaman Web Lengkap?
Adakah kami mempunyai sebarang fungsi generik untuk menyemak sama ada halaman telah dimuatkan sepenuhnya dalam Selenium?
Anda cuba menentukan sama ada halaman web mempunyai selesai memuatkan menggunakan Selenium. Walaupun anda telah mencuba menggunakan kod tersebut, walaupun semasa halaman dimuatkan, ia tidak menunggu. Anda mencari penyelesaian generik berbanding penyelesaian yang meneliti elemen tertentu untuk keterlihatan atau kebolehklikan.
Jawapan:
Tidak, tiada kaedah Selenium generik untuk mengesahkan memuatkan penuh web halaman.
Penjelasan:
Mari kita periksa kod anda:
new WebDriverWait(firefoxDriver, pageLoadTimeout).until( webDriver -> ((JavascriptExecutor) webDriver).executeScript("return document.readyState").equals("complete"));
Pembolehubah pageLoadTimeout dalam kod ini sebenarnya tidak sepadan dengan pageLoadTimeout sebenar () fungsi.
Walau bagaimanapun, untuk kes penggunaan anda untuk menyemak sama ada halaman telah dimuatkan, anda boleh menggunakan pageLoadStrategy() yang ditetapkan kepada "normal" (nilai lain yang mungkin termasuk "tiada" dan "bersemangat") menggunakan sama ada kelas DesiredCapabilities atau ChromeOptions. Berikut ialah contoh:
Menggunakan Keupayaan yang Diingini:
DesiredCapabilities dcap = new DesiredCapabilities(); dcap.setCapability("pageLoadStrategy", "normal"); FirefoxOptions opt = new FirefoxOptions(); opt.merge(dcap); WebDriver driver = new FirefoxDriver(opt);
Menggunakan ChromeOptions:
ChromeOptions opt = new ChromeOptions(); opt.setPageLoadStrategy(PageLoadStrategy.NORMAL); WebDriver driver = new FirefoxDriver(opt);
Pertimbangan :
Tetapan PageLoadStrategy kepada "biasa" memastikan bahawa klien penyemak imbas telah mencapai keadaan di mana 'document.readyState' sama dengan "lengkap." Walau bagaimanapun, ini tidak menjamin bahawa semua panggilan JavaScript dan Ajax telah selesai.
Untuk menangani perkara ini, anda boleh menggunakan fungsi untuk menunggu semua panggilan JavaScript dan Ajax selesai:
public void WaitForAjax2Complete() throws InterruptedException { while (true) { if ((Boolean) ((JavascriptExecutor)driver).executeScript("return jQuery.active == 0")){ break; } Thread.sleep(100); } }
Sebagai alternatif, anda boleh menggunakan WebDriverWait bersama-sama dengan ExpectedConditions untuk menunggu acara atau elemen tertentu nyatakan:
// Wait for a specific part of the page title new WebDriverWait(driver, 10).until(ExpectedConditions.titleContains("partial_title_of_application_under_test")); // Wait for a specific element to become visible WebElement ele = new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("xpath_of_the_desired_element")));
Rujukan:
Atas ialah kandungan terperinci Adakah Terdapat Fungsi Selenium Generik untuk Mengesahkan Pemuatan Halaman Web Lengkap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!