לא מצליח להריץ Chrome באמצעות (JAVA&Python) Appium?


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

לבעיה כזו יכולות להיות מספר סיבות ולהן גם פיתרון:
  1. עבודה עם GPU מובנה
  2. עבודה עם Vulcan
  3. בחירת דרייבר לא תואם לכרום
 

 עבודה עם מאיץ גרפי מובנה (GPU)

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

  1. סגרו כמובן את האימולטור שלכם.
  2. היכנסו למנהל האימולטורים באנדרואיד סטודיו.
  3. לחצו על האפשרויות (3 נקודות) ו-EDIT בשורת האימולטור שלכם. 
  4. גללו למטה בפרטים לEmulated Performance.
  5. שנו את ההגדרה מאוטומטי לSoftware - GLES 2.0.
  6. פתחו את האימטור (אני פותח ב-בCold Boot).

 עדיין יש לכם בעיות? ננטרל את Vulcan

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

הדרך הכי פשוטה לנטרל אותו (אם לא קיים זה לא מזיק):

  1. תפתחו את התקיה של מנהל האימולטורים שלכם (Device Manager) על ידי לחיצה על 3 הנקודות 'הצג בתיקיה': 

  2. בתיקייה אחת מעל (Android.) צרו קובץ advancedFeatures.ini 
  3. פתחו את הקובץ בעורך והזינו את שני המשתנים הבאים: 
  4. Vulkan = off
    GLDirectMem = on
  5. שימרו את הקובץ ופיתחו מחדש את אנדרואיד סטודיו ואת Device Manager והפעילו את האימולטור מחדש.

 

אם הכל עבד אך עדיין יש לכם תקיעויות בכרום כנראה שהדרייבר איתו אתם עובדים לא מתאים ולכן עליכם לבדוק איזו גרה של כרום יש לכם באימולטור, לעדכן את כרום באימולטור ולהוריד ולהתקין את הדרייבר המתאים וגם לקרוא לו בקוד שלכם.

בקרו באתר הדרייברים של בכרומיום והורידו והתקינו את המתאים לאימולטור שלכם.

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

בהגדרות הדרייבר שלכם בJAVA:

אם הורדתם את הדרייבר המתאים לאימולטור שלכם העתקו אותו לתיקיה שלכם בפרויקט או עשו לכם תיקיה של דרייברים שונים לאימולטורים שונים ובקוד הוסיפו את השורה הבאה בEclipse במקטע הגדרות הדרייבר:

UiAutomator2Options options = new UiAutomator2Options();

options.setDeviceName("emulatorName");

options.setChromedriverExecutable("{yourpath}\\chrome113\\chromedriver.exe");

options.setCapability("browserName", "Chrome");

לאחרונה יש שינויים וכנראה יהיו עוד בהמשך ומומלץ לקרוא גם את המידע הזה באתר של אנדרואיד סטודיו.

 בהגדרות הדרייבר שלכם בPython:

באותו אופן כמו קודם אבל בחלק הdesired_caps שלכם הזינו את מיקום הדרייבר:

desired_caps = dict(

deviceName='Android',
platformName='Android',
browserName='Chrome',
automationName='UiAutomator2',
chromedriverExecutable='{yourpath}\\chrome113\\chromedriver.exe'
)

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

דבר חשוב נוסף לא לשכוח לשים ()driver.quit בסיום הבדיקה.

כיתבו לי אם מצאתם מידע לא מדוייק או נכון במאמר. 




תגובות

פוסטים פופולריים מהבלוג הזה

אמולטור למכשירי אנדרויד - כלי קטן חוסך זמן

באגים קשים לשחזור - הפעם מובייל

מה זה IIS ולמה אני צריך את זה בבדיקות