ݺߣ

ݺߣShare a Scribd company logo
DP   ב -60  שקופיות פשוטות www.AdvancedQTP.co.il
מה זה  DP ? DP   הם ראשי - תיבות ל - Descriptive Programming
כן ,  אבל  מה  זה  DP ? DP   הינה דרך מגניבה לעבוד ב - QTP ,  בלי מאגר האובייקטים  ( OR )
למה שארצה לעשות משהו כזה ?
יש כמה סיבות
לפעמים תהיה חייב פונקציות ותרחישי התאוששות עובדים עם  Actions   שונים Actions   שונים  =  מאגרים אובייקטים שונים
אני מכיר אותך ? לא בטוח ...
לפעמים תהיה חייב יש אובייקטים שלא ניתן להקליט למאגר חלונות משנה מסוג  Auto-Hide אובייקטים בהיררכיות משתנות אובייקטים פנימיים ,  תפריטי משנה
אל תזוז ,  נבלה ! גם אם נראה שהצלחנו להקליט את החלון ,  בפועל נקבל שכל התכונות שלו ריקות
פשטות אין סיבה להוציא את התותחים הכבדים לא כל כפתור שמופיע פעם אחת בתסריט צריך להיכנס למאגר האובייקטים שלנו
ולבסוף אפשר לעשות דברים מאוד מגניבים עם  DP
OK ,  שכנעת אותי
קודם כל ,  נצטרך להבין לעומק את מאגר האובייקטים מה הוא מאגר האובייקטים איך מאגר האובייקטים עובד
רגע ,  חשבתי ש - DP   עוקף את השימוש במאגר האובייקטים
נכון ,  אבל מאחורי הקלטים ,  גם  DP   וגם ה - OR   עובדים באותו אופן כך שלהבין את מאגר האובייקטים יאפשר לנו להבין  DP
מה הוא מאגר האובייקטים ?
קסם מסתורי שמאפשר לנו להקליט אובייקטים ,  על מנת לזהות אותם בהמשך
למה הכוונה ב " להקליט אובייקט " לרשום כיצד ניתן לזהות אותו בעתיד
מי אתה ? = איך אוכל לזהות אותך
זיהוי האובייקט מתבצע באמצעות  תכונות  וערכים
מי אתה = הגובה שלך  = 400 הכותרת שלך  = " Notepad " אתה גלוי  ( Visible=True )
אז ,  מה הוא ה - OR   בפועל ? אוספים של תכונות זיהוי והערכים  המתאימים להן כל אוסף מתאים לאובייקט  " אמיתי " אין שום קסם מסתורי
OK ,  אז מה זה  DP ? DP   הינו דרך לציין את תכונות הזיהוי והערכים ,  מבלי להשתמש במעטפת של מאגרת האובייקטים גם פה לא מסתתר שום קסם מסתורי
OK ,  הבנתי ,  הכל זה רק תכונות וערכים אפשר להמשיך ?
איך  בפועל  משתמשים ב - DP ישנן שתי דרכים
1 לזרוק את תכונות הזיהוי והערכים ישר לתוך הפקודה שאנו מבצעים
זה בדיוק אותו  Syntax   ישן וטוב .  השינוי היחיד הוא שהמחרוזת בתוך הסוגריים אינה שם האובייקט ב - OR במקום ,  זוהי מחרוזת זיהוי מהצורה  Property:=Value
זאת נראית דרך שימוש מאוד מגבילה מה אם אני רוצה לציין מספר תכונות שונות לכל אובייקט ?
אין בעיה : VBWindow(“height:=400”, “title:=New Document”).Maximize ניתן להשתמש בכמה תכונות שרק תרצה
הכל טוב ויפה ,  אבל מה אם ארצה להשתמש ב - Regular Expressions
שוב ,  אין בעיה : VBWindow(“title:=.*Document.*”).Maximize מחרוזת הזיהוי מתפרשת אוטומטית כ - Regular Expression
2 לשים את תכונות הזיהוי והערכים בתוך אובייקט זיהוי מיוחד ,  ולזרוק  אותו  לתוך הפקודה שאנו מבצעים
גם כאן ,  הערכים מתפרשים אוטומטים כ - Regular Expressions .  אם לא מעוניינים בכך : oDesc(“Property1”).RegularExpression = False
השיטה הראשונה מהירה וזורמת ,  ומתאימה לפקודה אחת  /  שתיים
כאשר רוצים לבצע מספר פקודות עם אובייקט מסוים ,  השיטה השנייה עדיפה בהרבה ( היא מאפשרת הגדרה חד פעמים ,  ושימושים חוזרים ונשנים )
אפשר לשלב בין  DP   ל - OR VBWindow(“OR”).VBButton(“text:=OK”).Click או  ( כאשר  oDesc   הוא אובייקט זיהוי ) VBWindow(“OR”).VBButton(oDesc).Click
אבל ,   לעולם הכיוון יהיה מה - OR   אל ה - DP כך שהפקודה הבאה לא תעבוד : VBWindow(“title:=notgood”).VBButton(“clickme”).Click
וזה פחות או יותר הכל כך שניתן להשתמש בכל אחת מהשיטות האלו  ( או בשילוב שלהן ),  ולעבוד ב - QTP   מבלי להזדקק למאגר האובייקטים
רגע ,  אמרת שאפשר לעשות דברים מגניבים עם  DP !
אכן כן נסקור כעת כמה מה - tricks and tips   הפופולאריים יותר הדוגמאות האלו הן רק קצה הקרחון .  מומלץ לשחק איתן על מנת לראות את הכוח האמיתי שיש ב - DP
כוח המחרוזת בשורה התחתונה ,  DP   הוא פשוט אוסף של מחרוזות ואנחנו יודעים לעשות דברים כל - כך מעניינים עם מחרוזות ...
כוח המחרוזת נניח שבאפליקציה שלנו יש  4  Checkboxes  :  Check0,…, Check4  אנחנו יכולים לעבור על כולן בלולאה פשוטה ולסמן אותן
כוח המחרוזת בעזרת משחק עם מחרוזות ,  אפשר לפתור בעיות זיהוי מורכבות ביותר ,  שנראות בלתי אפשריות התנסה באפשרויות שונות בעצמך
אובייקטים כפולים כש - QTP   נתקל ביותר מאובייקט אחד שמתאים לתיאור ,  הוא קופא ונתקע This kinda sucks
?
ל - DP   יש תכונת קסם שפותרת את הבעיה  : " index ".  התכונה מאפשרת ל - QTP   להבדיל בין אובייקטים  " זהים " Index   הוא מספר רץ שמתחיל ב -0
והכל בא על מקומו בשלום
עבודה עם אוספים של אובייקטים היכולת הזאת כ " כ מגניבה ,  שמגיעה לה כותרת בפני עצמה
הדבר  המגניב ביותר שאפשר לעשות עם  DP ,  הוא לעבוד עם אוספים של כל האובייקטים המתאימים לתיאור כלשהו
אני לא יודע מי אתם ,  או אפילו כמה מכם יש ,  אבל אני רוצה לסמן את כולכם ! DP   רגיל לא יעבוד  -  אין לנו מושג איך לזהות את כל האובייקטים
אוספי אובייקטים באים לעזרתנו שלב א :  הגדרת אובייקט תיאור
אוספי אובייקטים באים לעזרתנו שלב ב :   איסוף כלל האובייקטים המתאימים
אוספי אובייקטים באים לעזרתנו שלב ג :  שימוש באוסף האובייקטים עכשיו  oChildren   מחזיק אוסף של כל ה - Checkboxes .  אם נרצה להגיע ל - Checkbox   הראשון נשתמש ב - oChildren(0)
מה אפשר לעשות עם אוסף ? כל מה שרק נרצה !
דוגמאות לשימושים שכיחים סימון כלל ה - Checkboxes סימון כל ה - Checkboxes   עם תכונה כלשהי  ( אפילו  RO )
האפשרויות ממש בלתי מוגבלות הזנה של שדות רנדומאליים הזנה רק של שדות חובה אין תחזוקה  ( שדות חדשים מתווספים אוטומטית ,  לא מושפע משינויי  UI ) מאפשר סינון אובייקטים על פי תנאים מאוד מורכבים  ( כל מה שאפשר לכסות ב - If ) והרשימה עוד ארוכה ...
OK ,  זה אכן מגניב ,  אבל אפשר לעשות את זה רק לאובייקטים הפנימיים במסך כלשהו האם אפשר באופן דומה להשיג אוסף של החלונות הראשיים של האפליקציה ?
בוודאי
ראינו איך  DP   מאפשר לעבוד בלי ה - OR לפעמים כי אנחנו חייבים לפעמים זה פשוט יותר קליל ומועיל DP   מגיע עם המון פיצ ' רים מגניבים ,  שהופכים אותו לבלתי נפרד מאוטומציה טובה ב - QTP Taste it, Experience it, Learn it, Use it, Love it It’s worth your while
וזה היה  DP   ב -60  שקופיות פשוטות

More Related Content

לימוד תיכנות תיאורי (Descriptive Programming) ב-QTP

  • 1. DP ב -60 שקופיות פשוטות www.AdvancedQTP.co.il
  • 2. מה זה DP ? DP הם ראשי - תיבות ל - Descriptive Programming
  • 3. כן , אבל מה זה DP ? DP הינה דרך מגניבה לעבוד ב - QTP , בלי מאגר האובייקטים ( OR )
  • 4. למה שארצה לעשות משהו כזה ?
  • 6. לפעמים תהיה חייב פונקציות ותרחישי התאוששות עובדים עם Actions שונים Actions שונים = מאגרים אובייקטים שונים
  • 7. אני מכיר אותך ? לא בטוח ...
  • 8. לפעמים תהיה חייב יש אובייקטים שלא ניתן להקליט למאגר חלונות משנה מסוג Auto-Hide אובייקטים בהיררכיות משתנות אובייקטים פנימיים , תפריטי משנה
  • 9. אל תזוז , נבלה ! גם אם נראה שהצלחנו להקליט את החלון , בפועל נקבל שכל התכונות שלו ריקות
  • 10. פשטות אין סיבה להוציא את התותחים הכבדים לא כל כפתור שמופיע פעם אחת בתסריט צריך להיכנס למאגר האובייקטים שלנו
  • 11. ולבסוף אפשר לעשות דברים מאוד מגניבים עם DP
  • 12. OK , שכנעת אותי
  • 13. קודם כל , נצטרך להבין לעומק את מאגר האובייקטים מה הוא מאגר האובייקטים איך מאגר האובייקטים עובד
  • 14. רגע , חשבתי ש - DP עוקף את השימוש במאגר האובייקטים
  • 15. נכון , אבל מאחורי הקלטים , גם DP וגם ה - OR עובדים באותו אופן כך שלהבין את מאגר האובייקטים יאפשר לנו להבין DP
  • 16. מה הוא מאגר האובייקטים ?
  • 17. קסם מסתורי שמאפשר לנו להקליט אובייקטים , על מנת לזהות אותם בהמשך
  • 18. למה הכוונה ב " להקליט אובייקט " לרשום כיצד ניתן לזהות אותו בעתיד
  • 19. מי אתה ? = איך אוכל לזהות אותך
  • 20. זיהוי האובייקט מתבצע באמצעות תכונות וערכים
  • 21. מי אתה = הגובה שלך = 400 הכותרת שלך = " Notepad " אתה גלוי ( Visible=True )
  • 22. אז , מה הוא ה - OR בפועל ? אוספים של תכונות זיהוי והערכים המתאימים להן כל אוסף מתאים לאובייקט " אמיתי " אין שום קסם מסתורי
  • 23. OK , אז מה זה DP ? DP הינו דרך לציין את תכונות הזיהוי והערכים , מבלי להשתמש במעטפת של מאגרת האובייקטים גם פה לא מסתתר שום קסם מסתורי
  • 24. OK , הבנתי , הכל זה רק תכונות וערכים אפשר להמשיך ?
  • 25. איך בפועל משתמשים ב - DP ישנן שתי דרכים
  • 26. 1 לזרוק את תכונות הזיהוי והערכים ישר לתוך הפקודה שאנו מבצעים
  • 27. זה בדיוק אותו Syntax ישן וטוב . השינוי היחיד הוא שהמחרוזת בתוך הסוגריים אינה שם האובייקט ב - OR במקום , זוהי מחרוזת זיהוי מהצורה Property:=Value
  • 28. זאת נראית דרך שימוש מאוד מגבילה מה אם אני רוצה לציין מספר תכונות שונות לכל אובייקט ?
  • 29. אין בעיה : VBWindow(“height:=400”, “title:=New Document”).Maximize ניתן להשתמש בכמה תכונות שרק תרצה
  • 30. הכל טוב ויפה , אבל מה אם ארצה להשתמש ב - Regular Expressions
  • 31. שוב , אין בעיה : VBWindow(“title:=.*Document.*”).Maximize מחרוזת הזיהוי מתפרשת אוטומטית כ - Regular Expression
  • 32. 2 לשים את תכונות הזיהוי והערכים בתוך אובייקט זיהוי מיוחד , ולזרוק אותו לתוך הפקודה שאנו מבצעים
  • 33. גם כאן , הערכים מתפרשים אוטומטים כ - Regular Expressions . אם לא מעוניינים בכך : oDesc(“Property1”).RegularExpression = False
  • 34. השיטה הראשונה מהירה וזורמת , ומתאימה לפקודה אחת / שתיים
  • 35. כאשר רוצים לבצע מספר פקודות עם אובייקט מסוים , השיטה השנייה עדיפה בהרבה ( היא מאפשרת הגדרה חד פעמים , ושימושים חוזרים ונשנים )
  • 36. אפשר לשלב בין DP ל - OR VBWindow(“OR”).VBButton(“text:=OK”).Click או ( כאשר oDesc הוא אובייקט זיהוי ) VBWindow(“OR”).VBButton(oDesc).Click
  • 37. אבל , לעולם הכיוון יהיה מה - OR אל ה - DP כך שהפקודה הבאה לא תעבוד : VBWindow(“title:=notgood”).VBButton(“clickme”).Click
  • 38. וזה פחות או יותר הכל כך שניתן להשתמש בכל אחת מהשיטות האלו ( או בשילוב שלהן ), ולעבוד ב - QTP מבלי להזדקק למאגר האובייקטים
  • 39. רגע , אמרת שאפשר לעשות דברים מגניבים עם DP !
  • 40. אכן כן נסקור כעת כמה מה - tricks and tips הפופולאריים יותר הדוגמאות האלו הן רק קצה הקרחון . מומלץ לשחק איתן על מנת לראות את הכוח האמיתי שיש ב - DP
  • 41. כוח המחרוזת בשורה התחתונה , DP הוא פשוט אוסף של מחרוזות ואנחנו יודעים לעשות דברים כל - כך מעניינים עם מחרוזות ...
  • 42. כוח המחרוזת נניח שבאפליקציה שלנו יש 4 Checkboxes : Check0,…, Check4 אנחנו יכולים לעבור על כולן בלולאה פשוטה ולסמן אותן
  • 43. כוח המחרוזת בעזרת משחק עם מחרוזות , אפשר לפתור בעיות זיהוי מורכבות ביותר , שנראות בלתי אפשריות התנסה באפשרויות שונות בעצמך
  • 44. אובייקטים כפולים כש - QTP נתקל ביותר מאובייקט אחד שמתאים לתיאור , הוא קופא ונתקע This kinda sucks
  • 45. ?
  • 46. ל - DP יש תכונת קסם שפותרת את הבעיה : " index ". התכונה מאפשרת ל - QTP להבדיל בין אובייקטים " זהים " Index הוא מספר רץ שמתחיל ב -0
  • 47. והכל בא על מקומו בשלום
  • 48. עבודה עם אוספים של אובייקטים היכולת הזאת כ " כ מגניבה , שמגיעה לה כותרת בפני עצמה
  • 49. הדבר המגניב ביותר שאפשר לעשות עם DP , הוא לעבוד עם אוספים של כל האובייקטים המתאימים לתיאור כלשהו
  • 50. אני לא יודע מי אתם , או אפילו כמה מכם יש , אבל אני רוצה לסמן את כולכם ! DP רגיל לא יעבוד - אין לנו מושג איך לזהות את כל האובייקטים
  • 51. אוספי אובייקטים באים לעזרתנו שלב א : הגדרת אובייקט תיאור
  • 52. אוספי אובייקטים באים לעזרתנו שלב ב : איסוף כלל האובייקטים המתאימים
  • 53. אוספי אובייקטים באים לעזרתנו שלב ג : שימוש באוסף האובייקטים עכשיו oChildren מחזיק אוסף של כל ה - Checkboxes . אם נרצה להגיע ל - Checkbox הראשון נשתמש ב - oChildren(0)
  • 54. מה אפשר לעשות עם אוסף ? כל מה שרק נרצה !
  • 55. דוגמאות לשימושים שכיחים סימון כלל ה - Checkboxes סימון כל ה - Checkboxes עם תכונה כלשהי ( אפילו RO )
  • 56. האפשרויות ממש בלתי מוגבלות הזנה של שדות רנדומאליים הזנה רק של שדות חובה אין תחזוקה ( שדות חדשים מתווספים אוטומטית , לא מושפע משינויי UI ) מאפשר סינון אובייקטים על פי תנאים מאוד מורכבים ( כל מה שאפשר לכסות ב - If ) והרשימה עוד ארוכה ...
  • 57. OK , זה אכן מגניב , אבל אפשר לעשות את זה רק לאובייקטים הפנימיים במסך כלשהו האם אפשר באופן דומה להשיג אוסף של החלונות הראשיים של האפליקציה ?
  • 59. ראינו איך DP מאפשר לעבוד בלי ה - OR לפעמים כי אנחנו חייבים לפעמים זה פשוט יותר קליל ומועיל DP מגיע עם המון פיצ ' רים מגניבים , שהופכים אותו לבלתי נפרד מאוטומציה טובה ב - QTP Taste it, Experience it, Learn it, Use it, Love it It’s worth your while
  • 60. וזה היה DP ב -60 שקופיות פשוטות