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