Membutuhkan fungsi umum kerangka Selenium untuk visibilitas elemen berikutnya

Membutuhkan fungsi umum kerangka Selenium untuk visibilitas elemen berikutnya. Saya memiliki aplikasi web yang membutuhkan waktu lebih lama untuk memuat, dan saya sedang membangun kerangka otomatisasi Java Selenium untuk hal yang sama, Saat ini saya menggunakan:

wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("<xpath>")));

Tapi menggunakannya untuk setiap elemen, seperti setelah saya klik elemen A, selanjutnya menunggu elemen B dimuat, lalu klik elemen B, lalu tunggu elemen C, lalu klik elemen C.

Saya ingin menghilangkan langkah menunggu setiap elemen membutuhkan fungsi umum yang dapat digunakan untuk mengurangi hal ini. Saya seorang pemula di Selenium jadi penjelasan mendetail dengan contoh kode akan sangat dihargai.

Terima kasih sebelumnya.


person Amirtaraj R    schedule 24.07.2019    source sumber
comment
ExpectedConditions metode adalah cara umum untuk melakukannya.   -  person Guy    schedule 24.07.2019
comment
Telah membuat kelas dasar terpisah untuk fungsi-fungsi umum ini, jadi bisakah seseorang menjelaskan lebih lanjut bagaimana hal ini bisa dilakukan? Jika saya hanya perlu memanggil fungsi dari kelas dasar maka akan baik-baik saja atau dapat juga ditangani untuk semua baris kode sebagai default yang akan jauh lebih baik.   -  person Amirtaraj R    schedule 24.07.2019


Jawaban (1)


Anda hampir sampai, hasilnya akan seperti ini:

public WebElement waitForElement(WebDriver driver, String xpath) {
    return new WebDriverWait(driver, 10)
            .ignoring(NoSuchElementException.class)
            .until(ExpectedConditions.visibilityOfElementLocated(By.xpath(xpath)));
}

Saya telah menambahkan baris untuk mengatasi NoSuchElementException yang akan terjadi jika elemen tidak ada di halaman sebagai visibilityOfElementLocated mengasumsikan bahwa elemen tersebut ada di DOM dan itu akan memunculkan pengecualian yang disebutkan di atas jika elemennya tidak ada.

Opsi lainnya adalah untuk Pola Desain Model Objek Halaman

person Dmitri T    schedule 24.07.2019