Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menunggu Elemen dalam Selenium C# WebDriver?

Bagaimana untuk Menunggu Elemen dalam Selenium C# WebDriver?

Patricia Arquette
Patricia Arquetteasal
2025-01-25 18:46:12275semak imbas

How to Reliably Wait for an Element in Selenium C# WebDriver?

elemen yang boleh dipercayai menunggu di selenium c# webdriver

Berinteraksi dengan cekap dengan elemen web di Selenium C# memerlukan memastikan kehadiran mereka sebelum mencuba sebarang tindakan. Ini menghalang kesilapan biasa yang disebabkan oleh unsur -unsur yang tidak dimuatkan dalam masa. Berikut adalah dua kaedah yang mantap untuk melaksanakannya:

Kaedah 1: Menggunakan WebDriverwait dengan ekspresi lambda

Pendekatan ini menggunakan

dengan jelas menunggu elemen. Ekspresi lambda dengan ringkas untuk kewujudan elemen. WebDriverWait

<code class="language-csharp">WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(5));
IWebElement element = wait.Until(d => d.FindElement(By.Id("login")));</code>
Kod ini menunggu sehingga 5 saat untuk elemen dengan id "login". Jika elemen dijumpai, ia diberikan kepada pembolehubah

. Jika tidak dijumpai dalam waktu tamat, element dibuang. TimeoutException

Kaedah 2: Membuat kaedah pelanjutan tersuai untuk IWebDriver Untuk meningkatkan prestasi dan mengelakkan menunggu yang tersirat yang wujud dalam panggilan berulang

, kaedah lanjutan tersuai menawarkan penyelesaian yang lebih terkawal dan cekap.

FindElement

Kaedah lanjutan ini menambah beban
<code class="language-csharp">public static class WebDriverExtensions
{
    public static IWebElement FindElement(this IWebDriver driver, By by, int timeoutInSeconds)
    {
        if (timeoutInSeconds > 0)
        {
            var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
            return wait.Until(d => d.FindElement(by));
        }
        return driver.FindElement(by); // No wait if timeout is 0
    }
}</code>
yang menerima masa tamat. Jika

lebih besar daripada 0, ia menggunakan FindElement; Jika tidak, ia melakukan panggilan langsung timeoutInSeconds. WebDriverWait FindElement

Penggunaan contoh:

Contoh ini menunjukkan cara menggunakan kaedah lanjutan untuk menunggu unsur -unsur dengan pemilih CSS, menyediakan cara yang jelas dan efisien untuk mengendalikan kelewatan pemuatan elemen dalam ujian selenium anda. Memilih nilai masa tamat yang sesuai adalah penting untuk mengimbangi respons dan mengelakkan kelewatan yang tidak perlu.
<code class="language-csharp">var driver = new FirefoxDriver();
driver.FindElement(By.CssSelector("#login_button"), 10).Click(); // Waits 10 seconds
var employeeLabel = driver.FindElement(By.CssSelector("#VCC_VSL"), 10);
Assert.AreEqual("Employee", employeeLabel.Text);</code>

Atas ialah kandungan terperinci Bagaimana untuk Menunggu Elemen dalam Selenium C# WebDriver?. 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