قابلیت ها و ChromeOptions

قابلیت ها گزینه هایی هستند که می توانید برای سفارشی کردن و پیکربندی جلسه ChromeDriver از آنها استفاده کنید. این صفحه تمام قابلیت های پشتیبانی شده از ChromeDriver و نحوه استفاده از آنها را مستند می کند.

APIهای زبان WebDriver راه‌هایی برای انتقال قابلیت‌ها به ChromeDriver ارائه می‌کنند. مکانیسم دقیق در زبان متفاوت است، اما بیشتر زبان ها از یکی یا هر دو مکانیسم زیر استفاده می کنند:

  1. از کلاس ChromeOptions استفاده کنید. این توسط جاوا، پایتون و غیره پشتیبانی می شود.
  2. از کلاس DesiredCapabilities استفاده کنید. این توسط Python، Ruby و غیره پشتیبانی می شود. در حالی که در جاوا نیز موجود است، استفاده از آن در جاوا منسوخ شده است.

با استفاده از کلاس ChromeOptions

می‌توانید نمونه‌ای از ChromeOptions ایجاد کنید که روش‌های مناسبی برای تنظیم قابلیت‌های خاص ChromeDriver دارد. سپس می‌توانید شی ChromeOptions را به سازنده ChromeDriver منتقل کنید:

ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);

از زمان Selenium نسخه 3.6.0، کلاس ChromeOptions در جاوا رابط 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 ، باید نام قابلیت و نوع مقدار آن را بدانید. لیست کامل را در اینجا ببینید .

پایتون

caps = webdriver.DesiredCapabilities.CHROME.copy() 
caps['acceptInsecureCerts'] = True
driver = webdriver.Chrome(desired_capabilities=caps)

روبی

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 maximized را راه اندازی کنید

ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized");

استفاده از فایل اجرایی Chrome در یک مکان غیر استاندارد

ChromeOptions options = new ChromeOptions();
options.setBinary("/path/to/other/chrome/binary");

پنجره های محاوره ای را مسدود کنید

به‌طور پیش‌فرض، ChromeDriver Chrome را به گونه‌ای پیکربندی می‌کند که به پنجره‌های بازشو اجازه دهد. اگر می‌خواهید پنجره‌های بازشو را مسدود کنید (یعنی رفتار عادی کروم را زمانی که ChromeDriver کنترل نمی‌کند بازیابی کنید)، موارد زیر را انجام دهید:

ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("excludeSwitches",
     Arrays.asList("disable-popup-blocking"));

دایرکتوری دانلود را تنظیم کنید

کد زیر را می توان برای پیکربندی Chrome برای دانلود فایل ها در یک فهرست خاص استفاده کرد. با این حال، چندین هشدار وجود دارد که باید از آنها آگاه بود:

  • کروم استفاده از فهرست های خاص را برای دانلود ممنوع می کند. به ویژه، نمی توانید از پوشه دسکتاپ به عنوان دایرکتوری دانلود استفاده کنید. در لینوکس، شما همچنین نمی توانید از فهرست اصلی برای دانلود استفاده کنید. از آنجایی که لیست دقیق دایرکتوری های ممنوعه در معرض تغییر است، توصیه می شود از دایرکتوری استفاده کنید که معنای خاصی برای سیستم ندارد.
  • ChromeDriver به طور خودکار منتظر کامل شدن دانلود نمی ماند. اگر خیلی زود با driver.quit() تماس بگیرید، ممکن است Chrome قبل از پایان دانلود پایان یابد.
  • مسیرهای نسبی همیشه کار نمی کنند. برای بهترین نتیجه، به جای آن از مسیر کامل استفاده کنید.
  • در ویندوز، از "" به عنوان جداکننده مسیر استفاده کنید. استفاده از "/" در ویندوز قابل اعتماد نیست.
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 ببینید. در اینجا ما فقط قابلیت‌های خاص کروم را فهرست می‌کنیم.

شی ChromeOptions

اکثر قابلیت‌های خاص Chrome از طریق شی ChromeOptions در معرض دید قرار می‌گیرند. در برخی از زبان‌ها، این مورد توسط کلاس ChromeOptions پیاده‌سازی می‌شود. در زبان های دیگر، آنها در فرهنگ لغت goog:chromeOptions با قابلیت های دلخواه ذخیره می شوند.

نام تایپ کنید پیش فرض شرح
args لیست رشته ها فهرست آرگومان‌های خط فرمان برای استفاده در هنگام راه‌اندازی Chrome. آرگومان های دارای یک مقدار مرتبط باید با علامت '=' از هم جدا شوند (به عنوان مثال، ['start-maximized', 'user-data-dir=/tmp/temp_profile']). برای لیستی از آرگومان های کروم اینجا را ببینید.
binary رشته مسیر دسترسی به فایل اجرایی Chrome برای استفاده (در Mac OS X، این باید باینری واقعی باشد، نه فقط برنامه. مانند «/Applications/Google Chrome.app/Contents/MacOS/Google Chrome»)
extensions لیست رشته ها فهرستی از افزونه‌های کروم برای نصب در هنگام راه‌اندازی. هر مورد در فهرست باید یک برنامه افزودنی Chrome بسته بندی شده با کدگذاری پایه ۶۴ باشد (crx.)
localState فرهنگ لغت یک فرهنگ لغت با هر مدخل شامل نام اولویت و مقدار آن. این تنظیمات بر روی فایل Local State در پوشه داده های کاربر اعمال می شود.
prefs فرهنگ لغت یک فرهنگ لغت با هر مدخل شامل نام اولویت و مقدار آن. این تنظیمات برگزیده فقط برای نمایه کاربری در حال استفاده اعمال می شود. برای مثال، فایل "Preferences" را در فهرست اطلاعات کاربر Chrome مشاهده کنید.
detach بولی نادرست اگر نادرست باشد، وقتی ChromeDriver از بین می‌رود، Chrome خارج می‌شود، صرفنظر از اینکه جلسه خارج شود یا خیر. اگر درست باشد، Chrome تنها در صورت خروج از جلسه (یا بسته) خارج می‌شود. توجه داشته باشید، اگر درست است، و جلسه خارج نشد، ChromeDriver نمی‌تواند فهرست راهنمای داده‌های موقت کاربر را که نمونه Chrome در حال اجرا از آن استفاده می‌کند، پاک کند.
debuggerAddress رشته
آدرس یک سرور دیباگر کروم برای اتصال، به شکل <hostname/ip:port>، به عنوان مثال '127.0.0.1:38947'
excludeSwitches لیست رشته ها فهرست خط فرمان Chrome تغییر می‌کند تا ChromeDriver به‌طور پیش‌فرض هنگام راه‌اندازی Chrome عبور نمی‌کند. سوئیچ ها را با -- پیشوند قرار ندهید.
minidumpPath رشته دایرکتوری برای ذخیره miniumps کروم. (فقط در لینوکس پشتیبانی می شود.)
mobileEmulation فرهنگ لغت فرهنگ لغتی با مقدار «deviceName» یا مقادیر «deviceMetrics» و «userAgent». برای اطلاعات بیشتر به شبیه سازی موبایل مراجعه کنید.
perfLoggingPrefs فرهنگ لغت یک فرهنگ لغت اختیاری که تنظیمات برگزیده گزارش عملکرد را مشخص می کند. برای اطلاعات بیشتر قسمت زیر را ببینید.
windowTypes لیست رشته ها لیستی از انواع پنجره که در لیست دستگیره های پنجره ظاهر می شود. برای دسترسی به عناصر <webview>، "webview" را در این لیست قرار دهید.

شی perfLoggingPrefs

فرهنگ لغت perfLoggingPrefs فرمت زیر را دارد (همه کلیدها اختیاری هستند):

نام تایپ کنید پیش فرض شرح
enableNetwork بولی درست است، واقعی اینکه آیا رویدادها از دامنه شبکه جمع آوری شود یا خیر.
enablePage بولی درست است، واقعی جمع آوری رویدادها از دامنه Page.
traceCategories رشته (خالی) رشته‌ای از دسته‌های ردیابی Chrome جدا شده با کاما که رویدادهای ردیابی باید برای آن جمع‌آوری شوند. یک رشته نامشخص یا خالی ردیابی را غیرفعال می کند.
bufferUsageReportingInterval عدد صحیح مثبت 1000 تعداد میلی ثانیه درخواستی بین DevTools ردیابی رویدادهای استفاده از بافر. به عنوان مثال، اگر 1000 باشد، سپس یک بار در ثانیه، DevTools میزان پر بودن بافر ردیابی را گزارش می دهد. اگر گزارشی نشان دهد که استفاده از بافر 100٪ است، یک هشدار صادر می شود.

قابلیت های بازگشتی

این فهرستی از تمام قابلیت‌های بازگردانده شده مخصوص کروم است. (یعنی آنچه ChromeDriver هنگام ایجاد یک جلسه جدید برمی گرداند)

نام تایپ کنید شرح
chrome.chromedriverVersion رشته نسخه ChromeDriver
userDataDir رشته مسیر به فهرست اطلاعات کاربر که کروم از آن استفاده می کند؛ توجه داشته باشید، این در یک فرهنگ لغت "کروم" است
،

قابلیت ها گزینه هایی هستند که می توانید برای سفارشی کردن و پیکربندی جلسه ChromeDriver از آنها استفاده کنید. این صفحه تمام قابلیت های پشتیبانی شده از ChromeDriver و نحوه استفاده از آنها را مستند می کند.

APIهای زبان WebDriver راه‌هایی برای انتقال قابلیت‌ها به ChromeDriver ارائه می‌کنند. مکانیسم دقیق در زبان متفاوت است، اما بیشتر زبان ها از یکی یا هر دو مکانیسم زیر استفاده می کنند:

  1. از کلاس ChromeOptions استفاده کنید. این توسط جاوا، پایتون و غیره پشتیبانی می شود.
  2. از کلاس DesiredCapabilities استفاده کنید. این توسط Python، Ruby و غیره پشتیبانی می شود. در حالی که در جاوا نیز موجود است، استفاده از آن در جاوا منسوخ شده است.

با استفاده از کلاس ChromeOptions

می‌توانید نمونه‌ای از ChromeOptions ایجاد کنید که روش‌های مناسبی برای تنظیم قابلیت‌های خاص ChromeDriver دارد. سپس می‌توانید شی ChromeOptions را به سازنده ChromeDriver منتقل کنید:

ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);

از زمان Selenium نسخه 3.6.0، کلاس ChromeOptions در جاوا رابط 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 ، باید نام قابلیت و نوع مقدار آن را بدانید. لیست کامل را در اینجا ببینید .

پایتون

caps = webdriver.DesiredCapabilities.CHROME.copy() 
caps['acceptInsecureCerts'] = True
driver = webdriver.Chrome(desired_capabilities=caps)

روبی

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 maximized را راه اندازی کنید

ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized");

استفاده از فایل اجرایی Chrome در یک مکان غیر استاندارد

ChromeOptions options = new ChromeOptions();
options.setBinary("/path/to/other/chrome/binary");

پنجره های محاوره ای را مسدود کنید

به‌طور پیش‌فرض، ChromeDriver Chrome را به گونه‌ای پیکربندی می‌کند که به پنجره‌های بازشو اجازه دهد. اگر می‌خواهید پنجره‌های بازشو را مسدود کنید (یعنی رفتار عادی کروم را زمانی که ChromeDriver کنترل نمی‌کند بازیابی کنید)، موارد زیر را انجام دهید:

ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("excludeSwitches",
     Arrays.asList("disable-popup-blocking"));

دایرکتوری دانلود را تنظیم کنید

کد زیر را می توان برای پیکربندی Chrome برای دانلود فایل ها در یک فهرست خاص استفاده کرد. با این حال، چندین هشدار وجود دارد که باید از آنها آگاه بود:

  • کروم استفاده از فهرست های خاص را برای دانلود ممنوع می کند. به ویژه، نمی توانید از پوشه دسکتاپ به عنوان دایرکتوری دانلود استفاده کنید. در لینوکس، شما همچنین نمی توانید از فهرست اصلی برای دانلود استفاده کنید. از آنجایی که لیست دقیق دایرکتوری های ممنوعه در معرض تغییر است، توصیه می شود از دایرکتوری استفاده کنید که معنای خاصی برای سیستم ندارد.
  • ChromeDriver به طور خودکار منتظر کامل شدن دانلود نمی ماند. اگر خیلی زود با driver.quit() تماس بگیرید، ممکن است Chrome قبل از پایان دانلود پایان یابد.
  • مسیرهای نسبی همیشه کار نمی کنند. برای بهترین نتیجه، به جای آن از مسیر کامل استفاده کنید.
  • در ویندوز، از "" به عنوان جداکننده مسیر استفاده کنید. استفاده از "/" در ویندوز قابل اعتماد نیست.
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 ببینید. در اینجا ما فقط قابلیت‌های خاص کروم را فهرست می‌کنیم.

شی ChromeOptions

اکثر قابلیت‌های خاص Chrome از طریق شی ChromeOptions در معرض دید قرار می‌گیرند. در برخی از زبان‌ها، این مورد توسط کلاس ChromeOptions پیاده‌سازی می‌شود. در زبان های دیگر، آنها در فرهنگ لغت goog:chromeOptions با قابلیت های دلخواه ذخیره می شوند.

نام تایپ کنید پیش فرض شرح
args لیست رشته ها فهرست آرگومان‌های خط فرمان برای استفاده در هنگام راه‌اندازی Chrome. آرگومان های دارای یک مقدار مرتبط باید با علامت '=' از هم جدا شوند (به عنوان مثال، ['start-maximized', 'user-data-dir=/tmp/temp_profile']). برای لیستی از آرگومان های کروم اینجا را ببینید.
binary رشته مسیر دسترسی به فایل اجرایی Chrome برای استفاده (در Mac OS X، این باید باینری واقعی باشد، نه فقط برنامه. مانند «/Applications/Google Chrome.app/Contents/MacOS/Google Chrome»)
extensions لیست رشته ها فهرستی از افزونه‌های کروم برای نصب در هنگام راه‌اندازی. هر مورد در فهرست باید یک برنامه افزودنی Chrome بسته بندی شده با کدگذاری پایه ۶۴ باشد (crx.)
localState فرهنگ لغت یک فرهنگ لغت با هر مدخل شامل نام اولویت و مقدار آن. این تنظیمات بر روی فایل Local State در پوشه داده های کاربر اعمال می شود.
prefs فرهنگ لغت یک فرهنگ لغت با هر مدخل شامل نام اولویت و مقدار آن. این تنظیمات برگزیده فقط برای نمایه کاربری در حال استفاده اعمال می شود. برای مثال، فایل "Preferences" را در فهرست اطلاعات کاربر Chrome مشاهده کنید.
detach بولی نادرست اگر نادرست باشد، وقتی ChromeDriver از بین می‌رود، Chrome خارج می‌شود، صرفنظر از اینکه جلسه خارج شود یا خیر. اگر درست باشد، Chrome تنها در صورت خروج از جلسه (یا بسته) خارج می‌شود. توجه داشته باشید، اگر درست است، و جلسه خارج نشد، ChromeDriver نمی‌تواند فهرست راهنمای داده‌های موقت کاربر را که نمونه Chrome در حال اجرا از آن استفاده می‌کند، پاک کند.
debuggerAddress رشته
آدرس یک سرور دیباگر کروم برای اتصال، به شکل <hostname/ip:port>، به عنوان مثال '127.0.0.1:38947'
excludeSwitches لیست رشته ها فهرست خط فرمان Chrome تغییر می‌کند تا ChromeDriver به‌طور پیش‌فرض هنگام راه‌اندازی Chrome عبور نمی‌کند. سوئیچ ها را با -- پیشوند قرار ندهید.
minidumpPath رشته دایرکتوری برای ذخیره miniumps کروم. (فقط در لینوکس پشتیبانی می شود.)
mobileEmulation فرهنگ لغت فرهنگ لغتی با مقدار «deviceName» یا مقادیر «deviceMetrics» و «userAgent». برای اطلاعات بیشتر به شبیه سازی موبایل مراجعه کنید.
perfLoggingPrefs فرهنگ لغت یک فرهنگ لغت اختیاری که تنظیمات برگزیده گزارش عملکرد را مشخص می کند. برای اطلاعات بیشتر قسمت زیر را ببینید.
windowTypes لیست رشته ها لیستی از انواع پنجره که در لیست دستگیره های پنجره ظاهر می شود. برای دسترسی به عناصر <webview>، "webview" را در این لیست قرار دهید.

شی perfLoggingPrefs

فرهنگ لغت perfLoggingPrefs فرمت زیر را دارد (همه کلیدها اختیاری هستند):

نام تایپ کنید پیش فرض شرح
enableNetwork بولی درست است، واقعی اینکه آیا رویدادها از دامنه شبکه جمع آوری شود یا خیر.
enablePage بولی درست است، واقعی جمع آوری رویدادها از دامنه Page.
traceCategories رشته (خالی) رشته‌ای از دسته‌های ردیابی Chrome جدا شده با کاما که رویدادهای ردیابی باید برای آن جمع‌آوری شوند. یک رشته نامشخص یا خالی ردیابی را غیرفعال می کند.
bufferUsageReportingInterval عدد صحیح مثبت 1000 تعداد میلی ثانیه درخواستی بین DevTools ردیابی رویدادهای استفاده از بافر. به عنوان مثال، اگر 1000 باشد، سپس یک بار در ثانیه، DevTools میزان پر بودن بافر ردیابی را گزارش می دهد. اگر گزارشی نشان دهد که استفاده از بافر 100٪ است، یک هشدار صادر می شود.

قابلیت های بازگشتی

این فهرستی از تمام قابلیت‌های بازگردانده شده مخصوص کروم است. (یعنی آنچه ChromeDriver هنگام ایجاد یک جلسه جدید برمی گرداند)

نام تایپ کنید شرح
chrome.chromedriverVersion رشته نسخه ChromeDriver
userDataDir رشته مسیر به فهرست اطلاعات کاربر که کروم از آن استفاده می کند؛ توجه داشته باشید، این در یک فرهنگ لغت "کروم" است