יכולות הן אפשרויות שאפשר להשתמש בהן כדי להתאים אישית ולהגדיר סשן של 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
כדי להשתמש ב-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
ביכולות נבחרות.
אובייקט perfLoggingPrefs
מילון perfLoggingPrefs
הוא בפורמט הבא. כל המפתחות הם אופציונליים:
יכולות שהוחזרו
ריכזנו כאן רשימה של כל היכולות הספציפיות ל-Chrome שמוחזרות, כלומר מה ש-ChromeDriver מחזיר כשיוצרים סשן חדש.