בעיות שקשורות לקליקים

השגיאה 'הרכיב לא ניתן ללחיצה'

הלחיצה ב-ChromeDriver פועלת על ידי הדמייה של קליק בעכבר באמצע המלבן הראשון של הרכיב (או בקיצור הלקוח התוחם אם אין לו rect הלקוח הראשון). הדרך הקלה ביותר לברר איפה ChromeDriver מנסה ללחוץ היא לפתוח את כלי הפיתוח של Chrome ולבדוק את הרכיב שיש ללחוץ עליו מיד לפני הקריאה לפעולת הלחיצה. בוחרים את הרכיב בכלי הבדיקה ושמים לב לתיבה או לתיבות הכחולות שמייצגות את ריבועי הלקוח של האלמנט, כפי שמוצג בתמונה למטה. ChromeDriver ינסה ללחוץ באמצע הדף הראשון.

אם ChromeDriver זורק את השגיאה 'הרכיב לא ניתן ללחיצה', סביר להניח שזה בגלל שהמיקום לא באמת לחץ על המשתמש. כדי לבדוק זאת, מציבים את הסמן באמצע חלון הלקוח הראשון ובודקים אם אפשר ללחוץ עליו.

במקרה שלמעלה, הבדיקה ניסתה ללחוץ על רכיב העוגן. במקרה כזה לא ניתן ללחוץ על העוגן, אלא רק תמונת הצאצא. בגלל סגנון margin-bottom ברכיב התמונה, המרכז של רכיב העוגן נמצא מחוץ לגבולות התמונה הניתנת ללחיצה, וכתוצאה מכך ChromeDriver יקפיץ הודעת שגיאה. למידע נוסף על קביעת המיקום או הגודל, עיינו במפרט W3. כדי לתקן את המקרה שלמעלה, לחצו על התמונה במקום על העוגן.

השגיאה 'הרכיב לא ניתן ללחיצה' מתרחשת לעיתים קרובות במצבים הבאים, כאשר הבדיקה מנסה:

  • לוחצים על עוגן שרכיבי הצאצא שלו שניתן ללחוץ עליהם לא נמצאים בתוך גבולות העוגן (כמו שלמעלה).
  • לחיצה על רכיב מסוים, באופן מלא או חלקי, מתחת לרכיב אחר
  • לחיצה על רכיב מחוץ למסך כשקיימת שכבת-על קבועה (הרכיב נגלל לתצוגה, אך ייתכן שהוא נגלל מתחת לשכבת-העל הקבועה)
  • לוחצים על אלמנט שלא ניתן ללחוץ עליו באמצע (לדוגמה, סוגים מסוימים של רכיבי SVG קמורים)

לעיתים קרובות ניתן לפתור את הבעיות האלה על ידי לחיצה על צאצא של הרכיב הנתון, על ידי הסרה או הסתרה של רכיב החסימה באופן פרוגרמטי, באמצעות ה-API לאינטראקציות מתקדמות לחיצה בהיסט מהפינה השמאלית העליונה של הרכיב, או על ידי סימולציה של אירוע לחיצה על עכבר ב-JavaScript.

השגיאה 'הרכיב לא ניתן ללחיצה'

סביר להניח שהסיבה לכך היא שהמיקום של הרכיב השתנה זמן מה אחרי ש-ChromeDriver קבע את מיקום הרכיב, אבל לפני ש-ChromeDriver למעשה ביצע קליק במיקום.

כדי לקבוע אם זו הבעיה, מאתרים את החריג מהקליק ומתעדים מיד את המיקום והגודל הנוכחיים של הרכיב. ניתן להשוות זאת למיקום שעליו ChromeDriver דיווח עליו באופן חריג, ולבדוק אם הם שונים. במקרה כזה, צריך להמתין עד שהרכיב יפסיק לזוז או לנסות ללחוץ שוב. אם לא, מומלץ לדווח על באג בדף בדיקה קטן שיכול לשמש לשחזור הבעיה (גם אם הוא רק מדי פעם גורם לבעיה).

ל-ChromeDriver אין אפשרות ללחוץ על רכיב שזז

התכונה הזו לא נתמכת ב-ChromeDriver. אם הרכיב מסתיים בסופו של דבר, כדאי לחכות שזה יקרה. אם הרכיב לא מפסיק לזוז, ChromeDriver לא מבטיח שהקליק יצליח.