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

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

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

  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

กรณีการใช้งานทั่วไป

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

โดยค่าเริ่มต้น 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 จะไม่รอให้การดาวน์โหลดเสร็จสมบูรณ์โดยอัตโนมัติ ถ้าคุณเรียกใช้ driver.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);

ความสามารถที่ได้รับการยอมรับ

โปรดดูเอกสารประกอบของ Selenium และมาตรฐาน W3C WebDriver สำหรับมาตรฐาน ที่ ChromeDriver ยอมรับ ในส่วนนี้เราจะแสดงเฉพาะ 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 ที่เข้ารหัสฐาน 64 (.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 มีรูปแบบดังต่อไปนี้ (คีย์ทั้งหมดเป็นแบบไม่บังคับ)

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

ความสามารถที่ส่งกลับ

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

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