WebDriver: Menunggu Kehadiran Elemen
Soalan: Bagaimanakah saya boleh menunggu dengan pasti elemen untuk kelihatan sebelum ini mengkliknya? Penantian tersirat sahaja nampaknya tidak konsisten.
Untuk menangani perkara ini, penantian tersirat boleh digunakan. Walau bagaimanapun, penyelesaian yang lebih dipercayai ialah:
for (int second = 0;; second++) { Thread.sleep(sleepTime); if (second >= 10) fail("timeout : " + vName); try { if (driver.findElement(By.id(prop.getProperty(vName))).isDisplayed()) break; } catch (Exception e) { writeToExcel("data.xls", e.toString(), parameters.currentTestRow, 46); } } driver.findElement(By.id(prop.getProperty(vName))).click();
Kod ini menunggu sehingga elemen kelihatan atau nilai tamat masa dicapai. Walau bagaimanapun, ia memerlukan pengguna untuk menentukan masa menunggu, yang boleh menyusahkan.
Jawapan: Gunakan keupayaan menunggu eksplisit WebDriver untuk memastikan menunggu yang boleh dipercayai untuk kehadiran elemen.
Kod berikut menunjukkan pendekatan yang disyorkan:
WebDriverWait wait = new WebDriverWait(webDriver, timeoutInSeconds); wait.until(ExpectedConditions.visibilityOfElementLocated(By.id<locator>));
Sebagai alternatif, anda boleh menggunakan:
wait.until(ExpectedConditions.elementToBeClickable(By.id<locator>));
Kaedah ini menyediakan kawalan terperinci ke atas keadaan menunggu, menghapuskan keperluan untuk logik tidur tersuai.
Tambahan Sumber:
Atas ialah kandungan terperinci Bagaimana untuk Menunggu Keterlihatan Elemen dalam WebDriver Sebelum Mengklik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!