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