ความสามารถคือตัวเลือกที่คุณสามารถใช้เพื่อปรับแต่งและกําหนดค่าเซสชัน ChromeDriver หน้านี้จะแสดงความสามารถทั้งหมดที่ ChromeDriver รองรับและวิธีใช้
WebDriver Language API มีวิธีส่งความสามารถไปยัง 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
กรณีการใช้งานทั่วไป
ใช้โปรไฟล์ที่กำหนดเอง
โดยค่าเริ่มต้น 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 โดยขยายหน้าจอ
เริ่ม Chrome แบบขยายเต็มหน้าจอโดยใช้สวิตช์ start-maximized
โดยทำดังนี้
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 ให้ใช้
\` as path separators.
/` ซึ่งไม่น่าเชื่อถือใน 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
รายการ
พจนานุกรม perfLoggingPrefs
มีรูปแบบดังต่อไปนี้ โดยคุณไม่จำเป็นต้องระบุคีย์ใดเลย
ความสามารถที่ส่งคืน
ต่อไปนี้คือรายการความสามารถทั้งหมดที่ Chrome แสดงผล กล่าวคือสิ่งที่ ChromeDriver แสดงผลเมื่อคุณสร้างเซสชันใหม่