יכולות ו-ChromeOptions

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

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

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

שימוש בכיתה ChromeOptions

אפשר ליצור מופע של ChromeOptions, ולהשתמש בשיטות נוחות להגדרת יכולות ספציפיות ל-ChromeDriver. לאחר מכן אפשר להעביר את האובייקט ChromeOptions לבונה 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);

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

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

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

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

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

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

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

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

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

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

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