Rumah >Java >javaTutorial >Adakah Terdapat Fungsi Selenium Generik untuk Mengesahkan Pemuatan Halaman Web Lengkap?

Adakah Terdapat Fungsi Selenium Generik untuk Mengesahkan Pemuatan Halaman Web Lengkap?

Patricia Arquette
Patricia Arquetteasal
2024-12-29 01:06:10884semak imbas

Is There a Generic Selenium Function to Verify Complete Web Page Loading?

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:

  • [Selenium IE WebDriver hanya berfungsi semasa penyahpepijatan](https://stackoverflow.com/questions/23791841/selenium-ie-webdriver-only-works-while-debugging)
  • [Selenium cara mengurus tunggu halaman muatkan?](https://stackoverflow.com/questions/19750811/selenium-how-to-manage-wait-for-page-load)
  • [Strategi pemuatan halaman untuk Chrome pemandu](https://stackoverflow.com/questions/55985139/page-load-strategy-for-chrome-driver-updated-till-selenium-v3-12-0)

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn