ความสามารถคือตัวเลือกที่คุณใช้เพื่อปรับแต่งและกำหนดค่าเซสชัน ChromeDriver หน้านี้แสดงความสามารถทั้งหมดที่ ChromeDriver รองรับ รวมทั้งวิธีการใช้งาน
API ภาษา WebDriver มอบวิธีต่างๆ ในการส่งความสามารถไปยัง ChromeDriver กลไกการทำงานนี้จะแตกต่างกันไปตามภาษา แต่ภาษาส่วนใหญ่จะใช้กลไกอย่างใดอย่างหนึ่งหรือทั้งสองกลไกต่อไปนี้
- ใช้ชั้นเรียน
ChromeOptions
ตัวเลือกนี้รองรับโดย Java, Python เป็นต้น - ใช้ชั้นเรียน
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
ใน
ความสามารถที่ต้องการ
วัตถุ perfLoggingPrefs
รายการ
พจนานุกรม PerfLrunningPrefs มีรูปแบบดังต่อไปนี้ (คีย์ทั้งหมดเป็นแบบไม่บังคับ)
ชื่อ | ประเภท | ค่าเริ่มต้น | คำอธิบาย |
---|---|---|---|
enableNetwork
|
boolean | จริง | รวบรวมเหตุการณ์จากโดเมนเครือข่ายหรือไม่ |
enablePage
|
boolean | จริง | รวบรวมเหตุการณ์จากโดเมนของหน้าหรือไม่ |
traceCategories
|
สตริง | (ว่าง) | สตริงที่คั่นด้วยคอมมาของหมวดหมู่การติดตามใน Chrome ที่ควรรวบรวมเหตุการณ์การติดตาม สตริงที่ไม่ระบุหรือว่างเปล่าจะปิดใช้การติดตาม |
bufferUsageReportingInterval
|
จำนวนเต็มบวก | 1000 | จำนวนมิลลิวินาทีที่ขอระหว่างเหตุการณ์การใช้งานบัฟเฟอร์การติดตามของเครื่องมือสำหรับนักพัฒนาเว็บ เช่น หากเป็น 1,000 แล้ว 1 ครั้งต่อวินาที เครื่องมือสำหรับนักพัฒนาเว็บจะรายงานว่าบัฟเฟอร์การติดตามมีความสมบูรณ์แค่ไหน หากรายงานระบุว่ามีการใช้บัฟเฟอร์ 100% จะมีการออกคำเตือน |
ความสามารถที่ส่งกลับ
นี่เป็นรายการความสามารถทั้งหมดที่ Chrome ได้รับคืนมา (สิ่งที่ ChromeDriver แสดงผลเมื่อคุณสร้างเซสชันใหม่)
ชื่อ | ประเภท | คำอธิบาย |
---|---|---|
chrome.chromedriverVersion
|
สตริง | เวอร์ชันของ ChromeDriver |
userDataDir
|
สตริง | เส้นทางไปยังไดเรกทอรีข้อมูลผู้ใช้ที่ Chrome ใช้อยู่ โปรดทราบว่านี่คือภายในโค้ด "chrome" พจนานุกรม |