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
Lepaskan: 2024-12-29 01:06:10
asal
922 orang telah melayarinya

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"));
Salin selepas log masuk

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);
Salin selepas log masuk

Menggunakan ChromeOptions:

ChromeOptions opt = new ChromeOptions();
opt.setPageLoadStrategy(PageLoadStrategy.NORMAL);
WebDriver driver = new FirefoxDriver(opt);
Salin selepas log masuk

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);
    }
}
Salin selepas log masuk

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")));
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan