יכולות ו-ChromeOptions

יכולות הן אפשרויות שבהן אפשר להשתמש כדי להתאים אישית ולהגדיר סשן של ChromeDriver. בדף הזה מתועדות כל היכולות הנתמכות ב-ChromeDriver ומוסבר איך להשתמש בהן.

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

  1. שימוש בכיתה ChromeOptions. האפשרות הזו נתמכת ב-Java, Python וכו'.
  2. שימוש בכיתה DesiredCapabilities. האפשרות הזו נתמכת ב-Python, Ruby וכו'. היא זמינה גם ב-Java, אבל השימוש בה ב-Java הוצא משימוש.

שימוש בכיתה של ChromeOptions

אפשר ליצור מופע של ChromeOptions, שכולל שיטות נוחות להגדרת יכולות ספציפיות ל-ChromeDriver. לאחר מכן אפשר להעביר את ChromeOptions ל-constructor של ChromeDriver:

ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);

החל מגרסה 3.6.0 של Selenium, המחלקה ChromeOptions ב-Java מממשת גם את הממשק Capabilities, וכך מאפשרת לציין יכולות WebDriver אחרות שאינן ספציפיות ל-ChromeDriver.

ChromeOptions options = new ChromeOptions();

// Add the WebDriver proxy capability.
Proxy proxy = new Proxy();
proxy.setHttpProxy("myhttpproxy:3337");
options.setCapability("proxy", proxy);

// Add a ChromeDriver-specific capability.
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);

שימוש ביכולות הרצויות

כדי להשתמש ב-DesiredCapabilities, אתם צריכים לדעת את השם של היכולת ואת סוג הערך שלה. הרשימה המלאה זמינה כאן.

Python

caps = webdriver.DesiredCapabilities.CHROME.copy() 
caps['acceptInsecureCerts'] = True
driver = webdriver.Chrome(desired_capabilities=caps)

Ruby

caps = Selenium::WebDriver::Remote::Capabilities.chrome(
     "goog:chromeOptions" => {"args" => [ "window-size=1000,800" ]})
driver = Selenium::WebDriver.for :chrome, desired_capabilities: caps

תרחישים נפוצים לדוגמה

שימוש בפרופיל מותאם אישית (שנקרא גם ספריית נתוני משתמשים)

כברירת מחדל, ChromeDriver ייצור פרופיל זמני חדש לכל סשן. לפעמים תרצו להגדיר העדפות מיוחדות או להשתמש לגמרי בפרופיל מותאם אישית. אם האפשרות הראשונה היא 'chrome.prefs', אפשר להשתמש בקובץ (מתוארת בהמשך) כדי לציין העדפות שיחולו לאחר ש-Chrome יופעל. אם בגרסה השנייה, ניתן להשתמש במתג שורת הפקודה user-data-dir של Chrome כדי לומר ל-Chrome באיזה פרופיל להשתמש:

ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=/path/to/your/custom/profile");

כדי ליצור פרופיל מותאם אישית, אפשר פשוט להריץ את Chrome (בשורת הפקודה או דרך ChromeDriver) כאשר המתג user-data-dir מוגדר לספרייה חדשה כלשהי. אם הנתיב לא קיים, Chrome ייצור פרופיל חדש במיקום שצוין. אחרי שתעשו את זה תוכלו לשנות את הגדרות הפרופיל באופן הרצוי ו-ChromeDriver יוכל להשתמש בפרופיל בעתיד. פותחים את chrome://version בדפדפן כדי לראות באיזה פרופיל Chrome משתמש.

הפעלת Chrome בגודל מקסימלי

ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized");

שימוש בקובץ הפעלה של Chrome במיקום לא סטנדרטי

ChromeOptions options = new ChromeOptions();
options.setBinary("/path/to/other/chrome/binary");

חסימה של חלונות דו-שיח

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

ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("excludeSwitches",
     Arrays.asList("disable-popup-blocking"));

הגדרה של ספריית הורדות

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

  • ב-Chrome אין אפשרות להשתמש בספריות מסוימות להורדה. באופן ספציפי, לא ניתן להשתמש בתיקיית שולחן העבודה כספריית ההורדות. ב-Linux, גם אי אפשר להשתמש בספריית הבית להורדה. הרשימה המדויקת של הספריות האסורות עשויה להשתנות, ולכן מומלץ להשתמש בספרייה שאין לה משמעות מיוחדת עבור המערכת.
  • ChromeDriver לא ממתין באופן אוטומטי להשלמת ההורדה. אם קוראים ל-drive.quit() מוקדם מדי, ייתכן ש-Chrome ייסגר לפני שההורדה תסתיים.
  • נתיבים יחסיים לא תמיד פועלים. כדי לקבל את התוצאה הטובה ביותר, צריך להשתמש בנתיב המלא.
  • ב-Windows, משתמשים בכיתוב "" כמפרידי נתיב. שימוש בתו "/" לא מהימן ב-Windows.
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.default_directory", "/directory/path");
options.setExperimentalOption("prefs", prefs);

יכולות מוכרות

לעיון במסמכים בנושא סלניום, אפשר לעיין בתקן W3C WebDriver היכולות של ChromeDriver. כאן יש רק רשימה של מוצרים ספציפיים ל-Chrome יכולות.

אובייקט אחד (ChromeOptions)

רוב היכולות הספציפיות ל-Chrome נחשפות דרך ChromeOptions לאובייקט. בשפות מסוימות, ההטמעה הזו מוטמעת על ידי המחלקה ChromeOptions. לחשבון בשפות אחרות, הן נשמרות במילון goog:chromeOptions ב: ביכולות הרצויות.

שם סוג ברירת מחדל  תיאור 
args  רשימת מחרוזות   רשימת ארגומנטים בשורת הפקודה לשימוש כשמפעילים את Chrome. ארגומנטים עם ערך משויך צריכים להיות מופרדים באמצעות '=' (למשל ['start-maximized', 'user-data-dir=/tmp/temp_profile']). צפייה כאן לרשימה של ארגומנטים ב-Chrome.
binary String (מחרוזת)   נתיב לקובץ ההפעלה של Chrome לשימוש (ב-Mac OS X, הוא צריך להיות הקובץ הבינארי בפועל, לא רק האפליקציה. למשל, '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome')
extensions רשימת מחרוזות   רשימה של תוספים ל-Chrome להתקנה במהלך ההפעלה. כל פריט ברשימה צריך להיות תוסף ל-Chrome בקידוד base-64 (crx.)
localState מילון   מילון שבו כל רשומה מכילה את שם ההעדפה והערך שלה. ההעדפות האלה חלות על קובץ המדינה המקומית שבתיקיית נתוני המשתמשים.
prefs מילון   מילון שבו כל רשומה מכילה את שם ההעדפה והערך שלה. ההעדפות האלה חלות רק על פרופיל המשתמש שנמצא בשימוש. לעיון בקטע 'העדפות' בספריית נתוני המשתמשים של Chrome, כדי לראות דוגמאות.
detach בוליאני לא נכון אם המדיניות מוגדרת כ-False, Chrome ייסגר לאחר סיום הפעולה של ChromeDriver, גם אם הסשן נסגר. אם הערך הוא True, המערכת של Chrome נסגרת רק אם הסשן נסגר (או נסגר). חשוב לשים לב: אם הערך הוא True, והסשן לא נסגר, ל-ChromeDriver אין אפשרות לנקות את ספריית נתוני המשתמשים הזמנית שבה משתמש המופע של Chrome שפועל.
debuggerAddress String (מחרוזת)
כתובת של שרת לניפוי באגים ב-Chrome שצריך להתחבר אליו, בפורמט <hostname/ip:port>, לדוגמה. '127.0.0.1:38947'
excludeSwitches רשימת מחרוזות   רשימת מתגי שורת הפקודה של Chrome שלא כוללים את המעבר של ChromeDriver כברירת מחדל כשמפעילים את Chrome. אין להוסיף קידומת להחלפה עם -.
minidumpPath  String (מחרוזת)   ספרייה לאחסון Minidumps של Chrome . (נתמך רק ב-Linux.)
mobileEmulation מילון   מילון עם הערך deviceName או ערכים של deviceMetrics ו-userAgent. למידע נוסף, ראו אמולציה לנייד.
perfLoggingPrefs מילון   מילון אופציונלי שמציין את העדפות הרישום ביומן הביצועים. מידע נוסף מפורט בהמשך.
windowTypes רשימת מחרוזות   רשימה של סוגי החלונות שיופיעו ברשימת נקודות האחיזה לחלונות. כדי לגשת אל <webview> רכיבים, כולל 'WebView' ברשימה הזאת.

אובייקט אחד (perfLoggingPrefs)

מילון perfLoggingPrefs הוא בפורמט הבא (כל המפתחות הם אופציונליים):

שם סוג ברירת מחדל תיאור
enableNetwork בוליאני true האם לאסוף אירועים מהדומיין של הרשת.
enablePage בוליאני true האם לאסוף אירועים מהדומיין של הדף או לא.
traceCategories מחרוזת (ריק) מחרוזת מופרדת בפסיקים של קטגוריות מעקב ב-Chrome שעבורן צריך לאסוף אירועי מעקב. מחרוזת לא מוגדרת או ריקה משביתה את המעקב.
bufferUsageReportingInterval מספר שלם חיובי 1000 מספר אלפיות השנייה המבוקשות בין אירועי שימוש במאגר נתונים זמני של כלי פיתוח. לדוגמה, אם הערך הוא 1,000, אז פעם בשנייה, כלי הפיתוח ידווחו עד כמה מאגר הנתונים הזמני של המעקב מלא. אם הדוח מצביע על כך שהשימוש במאגר הנתונים הזמני הוא 100%, תונפק אזהרה.

יכולות שהוחזרו

זו רשימה של כל היכולות שהוחזרו ספציפית ל-Chrome. (כלומר, מה ש-ChromeDriver מחזיר כשיוצרים סשן חדש)

שם סוג  תיאור 
chrome.chromedriverVersion String (מחרוזת) גרסת ChromeDriver
userDataDir String (מחרוזת) נתיב לספריית נתוני המשתמשים שבה משתמש Chrome; הערה: הקובץ הזה בתוך 'Chrome'. מילון