הפעם אנחנו הולכים לדבר על Exception בסלניום. ולא סתם Exception אלא אחד כזה שהוא קשה לתפיסה הבנתית. אנחנו מדברים על – Stale Element Reference Exception.
המשמעות של המילה Stale היא – רקוב או פג תוקף , בדיוק כמו במקרה המדובר כאן בבדיקות שלנו. האלמנט אותו אנחנו רוצים לתפוס כבר לא בתוקף.
מה זאת אומרת לא בתוקף ? זה אומר שאחד משני המקרים התבצעו:
1. האלמנט נמחק מה-DOM
2. האלמנט אינו מקושר יותר ל-DOM
זה הרי ידוע שניתן בעזרת פקודות JavaScript בסיסיות להעלים \ לשנות \ למחוק אלמנטים מה-DOM , אז בואו ניקח מקרה לדוגמא בו תפסנו אלמנט בהתחלה ע"י :
WebElement test = driver.findElement(By.id("test"));
אח"כ ביצענו כל מיני פעולות על הדף כחלק מהבדיקה שלנו, ואחת מהן גרמה (ע"י פונקציה ב-JS כאמור) למחוק את האלמנט מה-DOM , או לחילופין – במסגרת הבדיקה היינו צריכים לנווט לעמוד אחר באפליקציה. אח"כ קראנו שוב פעם לאלמנט , תוך הפעלת פעולה מסויימת עליו:
test.click();
במקרה כזה, האובייקט שלנו: test מסוג WebElement – אותו איתחלנו בתחילת הבדיקה , כעת לא בתוקף (כי הוא למשל נמחק מהדף) , וכשאנו מפעילים עליו את הפעולה click , התוכנית תנסה לחפש אותו ותזרוק לנו את ה-Stale Element Reference Exception.
בדרך כלל, זהו לא Exception תדיר, אך שימו לב כי אם אתם עובדים על דפים עשירים בקוד JS או JQuery – התופעה יכולה לקרות
לקריאה נוספת אודות Stale Element Reference Exception:
https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/