מהו – Stale Element Reference Exception ?

הפעם אנחנו הולכים לדבר על 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/

Scroll to Top
דילוג לתוכן