הוספת לוגין רמי לוי ופונקציונליות חיפוש והוספת מוצר לעגלה בשופרסל - #3
הוספת לוגין רמי לוי ופונקציונליות חיפוש והוספת מוצר לעגלה בשופרסל#3ChayaEinhoren wants to merge 1 commit into
Conversation
…onality for Shufersal
|
|
||
| class BaseStore(OnlineStore): | ||
|
|
||
| # ✅ פונקציית login - מרוכזת אחת בלבד |
There was a problem hiding this comment.
תעוד לקוד אמור להיות בעברית
|
|
||
| self.wait_and_click(self.get_submit_selector()) | ||
|
|
||
| # self.wait_until_disappear(self.get_username_selector()) |
There was a problem hiding this comment.
האם מדובר בלוגין לאתר מסוים או לוגין כללי?
כי אם מדובר בלוגין כללי div#user-box מתכוון לID ספציפי, ואם מדובר בלוגין ספציפי - למה הוא ממומש בקלאס הזה?
| pass | ||
|
|
||
| # ✅ פונקציות עזר כלליות לשימוש חוזר בכל תהליך (לא רק login) | ||
| def wait_for_element(self, selector, timeout=10): |
There was a problem hiding this comment.
הפונקציות הכלליות מצוינות.
הייתי ממליצה להפריד אותן לclass אחר סטטי (יקראו לו לדוגמא SeleniumAction)
| @@ -0,0 +1,70 @@ | |||
| class OnlineStore: | |||
There was a problem hiding this comment.
מדובר בabstract class, תוסיפי לשם של הclass ירושה בABC
ובכל הפונקציות תכתבי pass במקום raise NotImplementedError
|
|
||
| class ShufersalStore(OnlineStore): | ||
| def login(self, username, password): | ||
| try: |
There was a problem hiding this comment.
תשמרי את הURL כמשתנה מחלקה קבוע
class ShufersalStore(OnlineStore):
URL = "https://www.shufersal.co.il/"
|
|
||
| def search_item(self, item_name): | ||
| print(f"מחפש: {item_name}") | ||
| self.driver.get("https://www.shufersal.co.il/") |
There was a problem hiding this comment.
אנחנו צריכות לשוחח על שינוי במבנה שיעזור לנו לא לטעון את הדף בכל פונקציה מחדש (אם את מעוניינת לנסות לבד תקראי על POM) בקצרה: כשאת עובדת עם סלניום ב-OOP, את לא צריכה לטעון את האתר מחדש בכל פונקציה. הגישה הנכונה היא להשתמש ב-Page Object Model (POM): כל עמוד באתר מיוצג על ידי מחלקה נפרדת שמכילה את האלמנטים והפעולות הרלוונטיות, והדרייבר מועבר ביניהן, מה שהופך את הקוד ליעיל וקל לתחזוקה.
ב־PR זה נוספו השינויים הבאים:
*מימוש תהליך התחברות (Login) לאתר רמי לוי. ברמי לוי, רוב הפונקציונליות רצה תקין, אך קיימת שגיאה הקשורה לסינון. שלחתי פניה לנטפריי וממתינה לתגובה.
*מימוש פונקציונליות חיפוש מוצר והוספת מוצר לעגלת הקניות באתר שופרסל. הפונקציונליות עובדת, אך הקוד בשלב זה אינו מסודר לפי פונקציות של base_store. בעז"ה אני מטפלת בזה היום בערב.
תיקונים ושיפורים כלליים בקוד הקשור לסקרייפרים ולניהול החנויות.
אשמח לסקירה ואישור.