יכולות הן אפשרויות שבעזרתן ניתן להתאים אישית ולהגדיר סשן של ChromeDriver. בדף הזה מפורטות כל היכולות הנתמכות ב-ChromeDriver ומוסבר איך להשתמש בהן.
ממשקי ה-API של WebDriver מספקים דרכים להעביר יכולות ל-ChromeDriver. המנגנון המדויק משתנה בהתאם לשפה, אך רוב השפות משתמשות באחד מהמנגנונים הבאים או בשניהם:
- יש להשתמש בכיתה
ChromeOptions
. תמיכה זו נתמכת ב-Java, Python וכו'. - יש להשתמש בכיתה
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
ביכולות הרצויות.
אובייקט אחד (perfLoggingPrefs
)
המילון perfLoggingPrefs מופיע בפורמט הבא (כל המפתחות הם אופציונליים):
שם | תיאור | ברירת המחדל | התיאור |
---|---|---|---|
enableNetwork
|
boolean | true | האם לאסוף אירועים מדומיין הרשת. |
enablePage
|
boolean | true | האם לאסוף אירועים מהדומיין של הדף? |
traceCategories
|
מחרוזת | (ריק) | מחרוזת שמופרדת בפסיקים של קטגוריות מעקב ב-Chrome שעבורן יש לאסוף אירועי מעקב. מחרוזת ריקה או לא צוינה משביתה את המעקב. |
bufferUsageReportingInterval
|
מספר שלם חיובי | 1,000 | מספר אלפיות השנייה המבוקשות בין אירועי שימוש במאגר נתונים זמני של DevTools. לדוגמה, אם הערך הוא 1000, אז פעם בשנייה, כלי הפיתוח ידווחו עד כמה נפח האחסון הזמני מלא. אם דוח מציין שהשימוש במאגר הנתונים הזמני הוא 100%, תישלח אזהרה. |
יכולות שהוחזרו
זוהי רשימה של כל היכולות שהוחזרו הספציפיות ל-Chrome. (כלומר, מה ש-ChromeDriver מחזיר כאשר יוצרים פעילות חדשה באתר)
שם | סוג | תיאור |
---|---|---|
chrome.chromedriverVersion
|
מחרוזת | של ChromeDriver |
userDataDir
|
מחרוזת | נתיב לספריית נתוני משתמש שבה Chrome משתמש; שים לב, זהו מילון של 'chrome' |