ความสามารถและตัวเลือก Chrome

ความสามารถคือตัวเลือกที่คุณสามารถใช้เพื่อปรับแต่งและกำหนดค่าเซสชันของ ChromeDriver หน้านี้จะแสดงความสามารถทั้งหมดที่รองรับของ ChromeDriver รวมถึงวิธีการใช้งาน

API ภาษาของ WebDriver จะช่วยให้คุณส่งความสามารถต่างๆ ไปยัง ChromeDriver ได้ กลไกนี้จะแตกต่างกันไปตามภาษา แต่ภาษาส่วนใหญ่จะใช้กลไกอย่างใดอย่างหนึ่งหรือทั้ง 2 อย่างต่อไปนี้

  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);

เนื่องจาก Selenium เวอร์ชัน 3.6.0 คลาส 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

Use Case ทั่วไป

ใช้โปรไฟล์ที่กำหนดเอง (หรือที่เรียกว่าไดเรกทอรีข้อมูลผู้ใช้)

โดยค่าเริ่มต้น ChromeDriver จะสร้างโปรไฟล์ชั่วคราวใหม่สำหรับแต่ละเซสชัน ในบางครั้ง คุณอาจต้องการตั้งค่ากำหนดพิเศษหรือใช้โปรไฟล์ที่กำหนดเองทั้งหมด หากเป็นอย่างแรก คุณสามารถใช้ความสามารถ "chrome.prefs" (อธิบายไว้ด้านล่าง) เพื่อระบุค่ากำหนดที่จะถูกนำไปใช้หลังจาก Chrome เริ่มทำงาน หากเป็นกรณีหลัง ให้ใช้สวิตช์บรรทัดคำสั่ง 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 แบบขยายใหญ่สุด

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);

ความสามารถที่ยอมรับ

โปรดดูความสามารถมาตรฐานที่ ChromeDriver ยอมรับในเอกสารประกอบของ Selenium และมาตรฐาน W3C WebDriver เราจะแสดงเฉพาะความสามารถ เฉพาะสำหรับ 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 ที่เข้ารหัสแบบ Base64 (.crx)
localState พจนานุกรม   พจนานุกรมที่มีแต่ละรายการประกอบด้วยชื่อของค่ากำหนดและค่า ค่ากำหนดเหล่านี้ใช้กับไฟล์ Local State ในโฟลเดอร์ข้อมูลผู้ใช้
prefs พจนานุกรม   พจนานุกรมที่มีแต่ละรายการประกอบด้วยชื่อของค่ากำหนดและค่า ค่ากําหนดเหล่านี้มีผลเฉพาะกับโปรไฟล์ผู้ใช้ที่ใช้งานอยู่เท่านั้น โปรดดูตัวอย่างในไฟล์ "ค่ากำหนด" ในไดเรกทอรีข้อมูลผู้ใช้ของ Chrome
detach boolean เท็จ หากเป็น "เท็จ" Chrome จะปิดลงเมื่อระบบปิดการทำงานของ ChromeDriver โดยไม่คำนึงถึงว่าเซสชันจะปิดอยู่ก็ตาม หาก "จริง" ระบบจะปิด Chrome เมื่อเซสชันถูกปิด (หรือปิด) เท่านั้น โปรดทราบว่าหากเป็นจริง และเซสชันยังไม่สิ้นสุดลง ChromeDriver จะไม่สามารถล้างไดเรกทอรีข้อมูลผู้ใช้ชั่วคราวที่อินสแตนซ์ของ Chrome ที่ทำงานอยู่ใช้งาน
debuggerAddress สตริง
ที่อยู่ของเซิร์ฟเวอร์โปรแกรมแก้ไขข้อบกพร่องของ Chrome ที่จะเชื่อมต่อในรูปแบบ <ชื่อโฮสต์/ip:port> เช่น "127.0.0.1:38947"
excludeSwitches รายการสตริง   รายการสวิตช์บรรทัดคำสั่งของ Chrome จะยกเว้น ChromeDriver โดยค่าเริ่มต้นเมื่อเริ่มต้น Chrome ไม่ต้องนำหน้าสวิตช์ด้วย --
minidumpPath  สตริง   ไดเรกทอรีสำหรับจัดเก็บ Chrome minidumps (รองรับเฉพาะใน Linux)
mobileEmulation พจนานุกรม   พจนานุกรมที่มีค่าสำหรับ “deviceName” หรือค่าสำหรับ “deviceMetrics” และ “userAgent” ดูข้อมูลเพิ่มเติมได้ที่การจำลองอุปกรณ์เคลื่อนที่
perfLoggingPrefs พจนานุกรม   พจนานุกรมที่ไม่บังคับซึ่งระบุค่ากำหนดการบันทึกประสิทธิภาพ โปรดดูข้อมูลเพิ่มเติมด้านล่าง
windowTypes รายการสตริง   รายการประเภทหน้าต่างที่จะปรากฏในรายการแฮนเดิลหน้าต่าง สำหรับการเข้าถึงองค์ประกอบ <webview> ให้รวม "webview" ในรายการนี้

วัตถุ perfLoggingPrefs รายการ

พจนานุกรม perfLrunningPrefs มีรูปแบบต่อไปนี้ (คีย์ทั้งหมดไม่บังคับ)

ชื่อ Type ค่าเริ่มต้น คำอธิบาย
enableNetwork boolean จริง รวบรวมเหตุการณ์จากโดเมนเครือข่ายหรือไม่
enablePage boolean จริง รวบรวมเหตุการณ์จากโดเมนหน้าเว็บหรือไม่
traceCategories สตริง (ว่าง) สตริงที่คั่นด้วยคอมมาของหมวดหมู่การติดตามใน Chrome ซึ่งควรรวบรวมเหตุการณ์การติดตาม สตริงที่ไม่ได้ระบุหรือว่างเปล่าจะปิดใช้การติดตาม
bufferUsageReportingInterval จำนวนเต็มบวก 1,000 จำนวนมิลลิวินาทีที่ขอระหว่างเหตุการณ์การใช้งานบัฟเฟอร์การติดตามสำหรับเครื่องมือสำหรับนักพัฒนาเว็บ ตัวอย่างเช่น ถ้ามีการใช้ 1,000 ครั้งต่อวินาที เครื่องมือสำหรับนักพัฒนาเว็บจะรายงานระดับบัฟเฟอร์การติดตามที่สมบูรณ์ หากรายงานระบุว่าการใช้บัฟเฟอร์เป็น 100% จะมีการออกคำเตือน

ความสามารถที่ส่งคืน

รายการความสามารถที่ส่งคืนเฉพาะ Chrome โดยเฉพาะ (เช่น สิ่งที่ ChromeDriver แสดงผลเมื่อคุณสร้างเซสชันใหม่)

ชื่อ ประเภท  คำอธิบาย 
chrome.chromedriverVersion สตริง เวอร์ชันของ ChromeDriver
userDataDir สตริง เส้นทางไปยังไดเรกทอรีข้อมูลผู้ใช้ที่ Chrome ใช้อยู่ โปรดทราบว่าข้อมูลนี้อยู่ในพจนานุกรม "chrome"