יכולות ו-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

כדי להשתמש ב-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 כדי לציין את הפרופיל שבו רוצים להשתמש:

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 בגודל מלא

מפעילים את Chrome במסך מלא באמצעות המתג start-maximized:

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 לא ממתין באופן אוטומטי לסיום ההורדה. אם תפעילו את driver.quit() מוקדם מדי, יכול להיות ש-Chrome יסתיים לפני שההורדה תסתיים.
  • כדי לקבל את התוצאות הטובות ביותר, מומלץ להשתמש בנתיבים מלאים, כי נתיבים יחסיים לא תמיד פועלים.
  • ב-Windows, השימוש ב-\` as path separators./‎ לא מהימן.
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.default_directory", "/directory/path");
options.setExperimentalOption("prefs", prefs);

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

כדי לקבל מידע על היכולות הרגילות ש-ChromeDriver תומך בהן, אפשר לעיין במסמכי התיעוד של Selenium ובתקן W3C WebDriver. כאן מפורטות היכולות הספציפיות ל-Chrome.

אובייקט ChromeOptions

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

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

אובייקט perfLoggingPrefs

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

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

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

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

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