Sudahkah Anda memeriksa waktu tunggu implisit?
Secara default, ini adalah 0, tetapi mungkin Anda menyetelnya ke nilai > 2 menit:
driver.manage().timeouts().implicitlyWait(timeInSeconds, TimeUnit.SECONDS);
Jika waktu tunggu implisit Anda lebih besar dari 0 dan Anda mencari elemen dengan
driver.findElements(...);
tetapi Elemen Anda TIDAK ada, maka Selenium akan menunggu SELURUH waktu yang ditentukan!
Selenium saja tidak menunggu, ketika setidaknya satu elemen ditemukan. Dalam hal ini ia akan mencari halaman tersebut satu kali dan segera kembali dengan daftar elemen yang ditemukan.
Jadi findElements() tanpa batasan bagus untuk memeriksa keberadaan suatu elemen, namun hanya baik untuk memeriksa ketidakberadaan ketika Anda menentukan waktu tunggu implisit yang sangat rendah (atau default 0).
Jika Anda benar-benar memerlukan waktu tunggu implisit > 0 karena alasan apa pun, maka Anda dapat membuat metode Anda sendiri yang menangani hal ini seperti di ini solusi.
Dalam kasus Anda, Anda dapat mengatur waktu tunggu implisit ke 0 tepat sebelum kode yang Anda posting:
driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS);
// then follows your code:
if(!driver.findElements(By.id(AppConstants.notificationcount)).isEmpty())
{
// DO SOMETHING
}
else
{
System.out.println("No Element available");
}
Jika Anda memerlukan waktu tunggu implisit selain 0 di tempat lain, setel kembali ke nilai asli setelah potongan kode Anda.
person
drkthng
schedule
08.08.2015