ดาวน์โหลด

Chrome เวอร์ชันก่อนหน้า

สำหรับ Chrome เวอร์ชันก่อนหน้า นี่คือเวอร์ชันของ ChromeDriver ที่ รองรับ

ดูข้อมูลเพิ่มเติมเกี่ยวกับการเลือก ChromeDriver เวอร์ชันที่เหมาะสมได้ที่หน้าการเลือกเวอร์ชัน

ChromeDriver 148

การแก้ไขข้อบกพร่อง

  • การเข้าถึง DOM: แก้ไขข้อขัดข้องที่เกิดขึ้นเมื่อจำลองการคลิกปุ่มภายใน iframe ซึ่งซ้อนอยู่ภายใน Shadow Root ที่ปิดอยู่ JavaScript ที่ใช้ก่อนหน้านี้เพื่อค้นหารหัสองค์ประกอบเฟรมเจ้าของไม่สามารถเจาะผ่าน Shadow Root ที่ปิดอยู่ได้ การติดตั้งใช้งานใหม่ใช้รูปแบบ f.X.d.Y.e.Z โดยตรงเพื่อแก้ไขเฟรม (crrev.com/c/7594919, ข้อบกพร่อง: 469831357)
  • ความปลอดภัย: เสริมความแข็งแกร่งในการล้างข้อมูลอาร์กิวเมนต์ของ Chrome เพื่อป้องกันช่องโหว่ที่อาจเกิดขึ้นซึ่งเกี่ยวข้องกับการแทรกอาร์กิวเมนต์ตามตำแหน่ง (crrev.com/c/7695604, ข้อบกพร่อง: 494464734)
  • การทดสอบ: เพิ่มkImplicitWaitการหมดเวลาสำหรับการทดสอบ FindElement(s)WhileNavigating ใน commands_unittest เมื่อเรียกใช้ภายใต้ AddressSanitizer (ASAN) การหมดเวลาเริ่มต้น 3 วินาทีไม่เพียงพอสำหรับลูปการลองใหม่ในการใช้ข้อผิดพลาดจำลองทั้งหมดภายใต้ค่าใช้จ่ายของ ASAN ซึ่งทำให้เกิดความไม่แน่นอน (crrev.com/c/7657276)

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

  • มาตรฐาน C++: แทนที่การรวม base/functional/callback_forward.h ที่เกินความจำเป็นในไฟล์ //chrome .cc โดยบังคับให้ใช้ callback.h เมื่อมีการใช้การเรียกกลับจริง (crrev.com/c/7200285, ข้อบกพร่อง: 40318405) ย้าย logging::LoggingSettings จาก base/logging.h ไปยังส่วนหัวของตัวเอง base/logging/logging_settings.h เพื่อปรับปรุงประสิทธิภาพการคอมไพล์ (crrev.com/c/7173024, relanding crrev.com/c/7160150 after revert crrev.com/c/7170750) แก้ไขข้อผิดพลาดต่างๆ ของ IWYU ที่เกี่ยวข้องกับ base/logging.h (crrev.com/c/7730403, Bug: 499476145)
  • มาตรฐาน C++: แทนที่การตรวจสอบแผนที่ที่ซ้ำซ้อนด้วยการเข้าถึงตัววนซ้ำ find(key) ที่มีประสิทธิภาพมากขึ้น (crrev.com/c/7705392, crrev.com/c/7693277, ข้อบกพร่อง: 452950815)count(key) ThreadDelegateที่แทรกผ่านเครื่องมือสร้าง Thread เพื่อปรับปรุงการห่อหุ้มข้อมูล และเพิ่มตัวเลือก Restartable ลงใน Thread เพื่อรองรับกรณีที่ต้องรีสตาร์ทเทรด (crrev.com/c/7696887, ข้อบกพร่อง: 40881604)
  • ความปลอดภัยของหน่วยความจำ: แปลงมาโครระดับไฟล์ #pragma allow_unsafe_buffers เป็นมาโครแบบละเอียด UNSAFE_TODO() ใน chrome/ (crrev.com/c/7132241, ข้อบกพร่อง: 409340989) ย่อจาก IOBuffer->span().first() เป็น IOBuffer->first() (crrev.com/c/7159119)
  • ทรัพยากร Dependency: อัปเดตทรัพยากร Dependency ของ crossbench เพื่อแก้ไขปัญหาในการค้นหาไบนารี ChromeDriver ที่สร้างขึ้นในเครื่องบน macOS และ Android (crrev.com/c/7673978)
  • การทดสอบ: เปิดใช้รูปแบบ module ใน chromedriver_py_tests อีกครั้งหลังจากแก้ไขโครงสร้างพื้นฐานของบิลด์และการทดสอบ (crrev.com/c/7707960)

ChromeDriver 147

การแก้ไขข้อบกพร่อง

  • การทดสอบ: เพิ่มการทดสอบถดถอยแบบปิดเพื่อยืนยันว่า ElementClick จัดการการคลิกผ่าน iframe แบบข้ามต้นทางที่มีองค์ประกอบซ้อนทับได้อย่างถูกต้อง โดยเฉพาะในสถานการณ์การแยกเว็บไซต์ ซึ่งจะช่วยให้มั่นใจได้ว่าระบบจะไม่กำหนดเส้นทางการคลิกไปยังเนื้อหาที่ฝังอย่างไม่ถูกต้องแทนที่จะเป็นการวางซ้อนที่มองเห็นได้ (crrev.com/c/7261984, ข้อบกพร่อง: 42321834, ข้อบกพร่อง: 42322220)

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

  • มาตรฐาน C++: เปลี่ยนชื่อโหมดและฟังก์ชันการถอดรหัส URL เพื่อให้เป็นไปตามคู่มือสไตล์ C++ ของ Google โดยเปลี่ยน DecodeURLMode เป็น DecodeUrlMode และ DecodeURLEscapeSequences() เป็น DecodeUrlEscapeSequences() (crrev.com/c/7593238) เปิดตัว url::UrlEscapeDecoder เพื่อลดความซับซ้อนในการใช้การถอดรหัส URL ทั่วทั้งฐานของโค้ด (crrev.com/c/7610180) นำ build/branding_buildflags.h ที่ไม่จำเป็นออกจากไฟล์ //chrome (crrev.com/c/7595125, Bug: 40318405) นำตรรกะ BUILDFLAG(IS_FUCHSIA) ออกจาก //chrome ยกเว้นภายใน ChromeDriver (crrev.com/c/5485913, Bug: 41481724)
  • ความปลอดภัยของหน่วยความจำ (การแปลงเป็นช่วง): แก้ไขเครื่องหมาย UNSAFE_TODO ในยูทิลิตี ChromeDriver โดยย้ายไปยังการใช้งานที่ปลอดภัยซึ่งอิงตามช่วง (crrev.com/c/7562602, ข้อบกพร่อง: 435317390)

ChromeDriver 146

การแก้ไขข้อบกพร่อง

  • ความเสถียร: แก้ไขข้อขัดข้องของ ChromeDriver ที่อาจเกิดขึ้นขณะประมวลผลคำสั่งหากหน้าต่างปิดพร้อมกัน (เช่น ขณะรอการนำทางให้เสร็จสมบูรณ์) การแก้ไขนี้จะล็อกออบเจ็กต์ WebView เพื่อป้องกันไม่ให้ออบเจ็กต์ถูกทิ้งก่อนเวลาอันควร (crrev.com/c/7257074, ข้อบกพร่อง: 468228355)
  • ความปลอดภัย: เพิ่มการตรวจสอบส่วนหัว Origin สำหรับการเชื่อมต่อ WebSocket ขาเข้ากับเซิร์ฟเวอร์ HTTP ของ ChromeDriver เพื่อป้องกันการลักลอบใช้ข้ามต้นทางที่อาจเกิดขึ้น (crrev.com/c/7538400, ข้อบกพร่อง: 478783560)
  • การทดสอบ: ย้าย testWebviewDetactedDuringClick ไปยังตัวกรองที่ไม่เสถียร โดยข้ามในการเรียกใช้ทั้งหมดแทนที่จะเป็นโหมด Headless เท่านั้น (crrev.com/c/7545378, ข้อบกพร่อง: 481485821)

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

ChromeDriver 145

ฟีเจอร์ใหม่

  • การทดสอบ: อัปเดตrun_py_tests.pyเฟรมเวิร์กการทดสอบให้ยอมรับการทดสอบสตริงที่กำหนดได้ซึ่งมีความยาวแตกต่างกัน (เช่น 53, 101 และ 501 อักขระ) โดยกำหนดเป้าหมายไปยังองค์ประกอบ input, textarea และ contenteditable ซึ่งจะช่วยให้มั่นใจได้ว่าไม่มีการทิ้งอักขระในระหว่างการดำเนินการ send_keys ที่ใช้เวลานาน (crrev.com/c/7221410, ข้อบกพร่อง: 428116078)
  • การทดสอบ: เพิ่มการทดสอบเฉพาะสำหรับองค์ประกอบ HTML <selectlist> (crrev.com/c/7420729, ข้อบกพร่อง: 342889200)

การแก้ไขข้อบกพร่อง

  • ภาพหน้าจอ: เปลี่ยนกลับการปรับขนาดภาพหน้าจอขององค์ประกอบ เนื่องจากข้อกำหนด WebDriver ไม่ได้กำหนดการปรับขนาด และไม่สอดคล้องกับฟังก์ชันภาพหน้าจออื่นๆ (crrev.com/c/7409603, ข้อบกพร่อง: 42323022)
  • การทดสอบ: แก้ไขข้อผิดพลาดใน testClientHintsDeviceNameIPhoneX และ testClientHintsDeviceNameIPad โดยอัปเดตความคาดหวังในการทดสอบของ ChromeDriver ให้ตรงกับค่าที่ถูกต้องล่าสุด (สำหรับฟิลด์ platform, platformVersion, model และ mobile) ที่เปิดตัวในส่วนหน้าของเครื่องมือสำหรับนักพัฒนาเว็บ (crrev.com/c/7408699, ข้อบกพร่อง: 474179501)

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

  • มาตรฐาน C++: ย้ายการใช้งาน base::Contains() ต่างๆ ไปยัง std::ranges::contains() ใน //chrome (crrev.com/c/7411011, Bug: 470391351) รวมถึงการแก้ไขการจัดรูปแบบที่จำเป็น (crrev.com/c/7247217) ปรับโครงสร้างพารามิเตอร์สตริงเป็น std::string_view เพื่อหลีกเลี่ยงการจัดสรรสตริงที่ไม่จำเป็นเมื่อใช้ substr() (crrev.com/c/7350716) นำ <map>includes จากส่วนหัวของ //chrome ที่เกินความจำเป็นออก (crrev.com/c/7225838, Bug: 40318405) แก้ไขการเรียงลำดับการรวมในบางไฟล์ (crrev.com/c/7366868) แทนที่การเรียกกลับ BodyAsStringCallbackDeprecated เดิมในการใช้งาน SimpleURLLoader ด้วย BodyAsStringCallback ซึ่งใช้ std::optional แทน std::unique_ptr (crrev.com/c/7210000, ข้อบกพร่อง: 40258809)
  • การทดสอบ: กลับมาใช้การกำหนดค่าการทดลองภาคสนามของช่อง InfobarPrioritization อีกครั้ง ซึ่งรวมถึงการแก้ไขเพื่อป้องกันไม่ให้เกิดข้อขัดข้องในการทดสอบเบราว์เซอร์ ChromeDriver เมื่อจัดการแถบข้อมูลที่รอดำเนินการซึ่งยังไม่ได้เพิ่มลงในลำดับชั้นการแสดงผล (crrev.com/c/7223590, ข้อบกพร่อง: 447176374) การกรองประเทศและภาษาที่กลับมาใช้ใหม่สำหรับฟีเจอร์ Glic ซึ่งก่อนหน้านี้ได้ย้อนกลับเนื่องจากความล้มเหลวในการทดสอบที่ไม่เกี่ยวข้อง (crrev.com/c/7245749, กลับมาใช้ใหม่ crrev.com/c/7148759 หลังจากย้อนกลับ crrev.com/c/7233767, ข้อบกพร่อง: 454431875)

ChromeDriver 144

ฟีเจอร์ใหม่

  • สิทธิ์: อัปเดตคำสั่ง SetPermission ให้เป็นไปตามข้อกำหนดล่าสุดของ W3C โดยใช้ URL ของเฟรมปัจจุบัน (ต้นทางที่ฝัง) นอกเหนือจากต้นทางระดับบนสุด ซึ่งจะกำหนดค่าสิทธิ์อย่างถูกต้อง เช่น storage-access ที่อิงตามบริบทที่ฝังไว้ (crrev.com/c/7106801, relanding crrev.com/c/7093216 after revert crrev.com/c/7104484, Bug: 384959114)
  • การทดสอบ: เพิ่ม testMetadata (รวมถึงชื่อการทดสอบ) ลงในเพย์โหลดการอัปโหลดการทดสอบของ ChromeDriver เพื่อรองรับผู้รับรองความไม่เสถียรเมื่อใช้รหัสการทดสอบที่มีโครงสร้าง (crrev.com/c/7124354, ข้อบกพร่อง: 456432041)

การแก้ไขข้อบกพร่อง

  • วงจรเป้าหมาย: แก้ไขข้อบกพร่องที่ ChromeDriver จะหยุดทำงานหากเฟรมหลักแยกออกขณะที่เฟรมย่อยรอการตอบกลับคำสั่ง ตอนนี้ ChromeDriver จะยกเลิกการเชื่อมต่อเฟรมลูกหลานโดยชัดแจ้งเมื่อเฟรมหลัก WebViewImpl ถูกล็อกและทำเครื่องหมายว่ายกเลิกการเชื่อมต่อระหว่างการประมวลผลคำสั่ง (crrev.com/c/7080912, ข้อบกพร่อง: 438436830)
  • การจัดการหน้าต่าง: ปิดใช้การทำงานในเบื้องหลังของหน้าต่างที่ถูกบดบังสำหรับเซสชัน ChromeDriver โดยเฉพาะ การเปลี่ยนแปลงนี้จะช่วยแก้ปัญหาใน WebDriver BiDi ที่การทดสอบอาจล้มเหลวหากเบราว์เซอร์พิจารณาว่าหน้าต่างถูกบดบังและจำกัดการทำงานอย่างไม่ถูกต้อง (crrev.com/c/7128058, Bug: 458027819)

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

  • มาตรฐาน C++: นำการรวม base/functional/callback_forward.h ที่เกินความจำเป็นในไฟล์ //chrome .cc ออก เพื่อบังคับใช้ callback.h เมื่อมีการใช้การเรียกกลับจริง (crrev.com/c/7200285, ข้อบกพร่อง: 40318405) ย้าย logging::LoggingSettings จาก base/logging.h ไปยังส่วนหัวของตัวเอง base/logging/logging_settings.h เพื่อปรับปรุงประสิทธิภาพการคอมไพล์ (crrev.com/c/7173024, relanding crrev.com/c/7160150 after revert crrev.com/c/7170750) การใช้งาน base::HexEncode ที่ย้ายข้อมูลแล้วไปยัง base::HexEncodeLower เวอร์ชันใหม่กว่า (crrev.com/c/7103100, ข้อบกพร่อง: 456472080)
  • ความปลอดภัยของหน่วยความจำ (การแปลงเป็นช่วง): ย้าย WriteToPipe และ WriteToPipeNoBestEffort ในการทดสอบหน่วย PipeBuilder และ PipeConnection เพื่อยอมรับ base::span แก้ไขการใช้บัฟเฟอร์ที่ไม่ปลอดภัย (crrev.com/c/7090293, ข้อบกพร่อง: 455758227) แปลงมาโครระดับไฟล์ #pragma allow_unsafe_buffers เป็นมาโครแบบละเอียด UNSAFE_TODO() ใน chrome/ (crrev.com/c/7132241, ข้อบกพร่อง: 409340989) ย่อจาก IOBuffer->span().first() เป็น IOBuffer->first() (crrev.com/c/7159119)

ChromeDriver 143

การแก้ไขข้อบกพร่อง

  • ความเสถียร: แก้ไขข้อขัดข้อง Use-After-Free (UAF) ภายใน OverrideNetworkConditions พอยน์เตอร์ดิบที่บันทึกไว้สำหรับการใช้งานในภายหลังจะได้รับการปล่อยระหว่างการเรียกใช้แบบต่อเนื่อง ตอนนี้ได้รับการจัดการอย่างเหมาะสมแล้ว (crrev.com/c/7047422, ข้อบกพร่อง: 42323833)
  • การทดสอบ: แก้ไขการทดสอบการแตะ Android ChromeDriver ที่ไม่เสถียรโดยใช้ WaitForCondition API เพื่อการซิงค์ที่เชื่อถือได้มากขึ้น (crrev.com/c/6978928, ข้อบกพร่อง: 42321861)
  • DSE Prewarm: ปิดใช้ฟีเจอร์ Prewarm ใน ChromeDriver โดยค่าเริ่มต้นผ่านสวิตช์ --disable-features=Prewarm เพื่อป้องกันไม่ให้หน้าเว็บที่อุ่นเครื่องไว้รบกวนการดำเนินการทดสอบและการค้นหาเป้าหมาย (crrev.com/c/7007072, ข้อบกพร่อง: 431928370)

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

  • มาตรฐาน C++: สลับ ref_counted.h เป็น scoped_refptr.h ในส่วนหัว //chrome ที่ใช้เฉพาะสมาร์ทพอยน์เตอร์ ซึ่งช่วยปรับปรุงประสิทธิภาพการคอมไพล์ (crrev.com/c/7080753, ข้อบกพร่อง: 40245294) ย้ายข้อมูล GURL ไปยังตัวแปร Get* (เช่น GetSpec() แทน spec()) เพื่อระบุการจัดสรรสตริงอย่างชัดเจน ซึ่งจะช่วยป้องกันไม่ให้เกิดการลดประสิทธิภาพโดยไม่ตั้งใจ (crrev.com/c/7002119, ข้อบกพร่อง: 448174617)
  • การทดสอบ: นำรูปแบบการตรวจสอบที่ซ้ำกันออกใน devtools_client_impl_unittest.cc โดยใช้ ADD_FAILURE() (crrev.com/c/6998270) เพิ่มการทดสอบถดถอยสำหรับ crbug.com/413382905 (crrev.com/c/6879417)

ChromeDriver 142

ฟีเจอร์ใหม่

  • การวินิจฉัย: เพิ่มTERMINATION_STATUS_EVICTED_FOR_MEMORYสถานะเพื่อแยกความแตกต่างระหว่างกระบวนการที่เบราว์เซอร์ปิดใช้งานโดยเชิงรุก (เพื่อประหยัดหน่วยความจำ) กับกระบวนการที่ขัดข้องเนื่องจากข้อผิดพลาดเกี่ยวกับหน่วยความจำไม่เพียงพอ (OOM) ปัจจุบันลักษณะการทำงานนี้จะเหมือนกับการขัดข้องเนื่องจาก OOM (แสดงแท็บเศร้า) แต่เป็นการวางรากฐานสำหรับการจัดการที่แตกต่างกันในอนาคต (crrev.com/c/6991933, Bug: 394092280)
  • การวินิจฉัย: เพิ่มgoog:processIDความสามารถในการตอบกลับของ WebDriver ซึ่งจะแสดงรหัสกระบวนการหลักของเบราว์เซอร์ในเดสก์ท็อป ซึ่งจะช่วยให้ ChromeDriver สอดคล้องกับ moz:processID ของ Firefox และช่วยในการทดสอบ API การช่วยเหลือพิเศษของแพลตฟอร์ม (crrev.com/c/5825307, ข้อบกพร่อง: 438884256)
  • การทดสอบ: เพิ่มการรองรับการอัปโหลดรหัสการทดสอบที่มีโครงสร้างไปยัง ResultSink สำหรับการทดสอบการผสานรวม Python ของ ChromeDriver (crrev.com/c/6916708, ข้อบกพร่อง: 418015486)

การแก้ไขข้อบกพร่อง

  • การวินิจฉัย: แก้ไขลักษณะการทำงานของ ChromeDriver เมื่อ Chrome ออกตามปกติเพื่อไม่ให้แสดงข้อความแสดงข้อผิดพลาดทั่วไปที่สร้างความสับสนซึ่งเกี่ยวข้องกับการใช้งาน user-data-dir อีกต่อไป ตอนนี้ข้อความจะระบุอย่างชัดเจนว่าอินสแตนซ์ถูกสิ้นสุดแล้ว และนำผู้ใช้ไปยังบันทึกแบบละเอียดสำหรับข้อผิดพลาดที่เฉพาะเจาะจงซึ่ง Chrome แสดง (crrev.com/c/6977507, Bug: 42323434)
  • การเริ่มต้น: อัปเดตโครงสร้างการเริ่มต้นของ ChromeDriver เพื่อให้ยังคงใช้งานร่วมกับการเปลี่ยนแปลงของ Selenium WebDriver v4.16.0 ได้ (crrev.com/c/6630600)
  • Android: แก้ไข CheckAppInstalled ใน Android เวอร์ชันเดิม (เก่ากว่า Android 11) ที่เครื่องมือจัดการแพ็กเกจไม่รองรับแฟล็ก --user cur (crrev.com/c/6785949, ข้อบกพร่อง: 433885051)
  • การทดสอบ: แก้ไขข้อบกพร่องที่ทำให้ IgnoreDuplicateNavs ลบล้างสวิตช์ความสามารถเริ่มต้นใน ChromeDriver อย่างไม่ถูกต้อง ระบบได้ปิดใช้ฟีเจอร์นี้สำหรับเซสชัน ChromeDriver และแก้ไขตรรกะ Switches::SetFromSwitches แล้ว (crrev.com/c/6949166, Bug: 445332809)

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

  • มาตรฐาน C++: แทนที่การเรียกใช้ base::JSONWriter::Write() ที่เลิกใช้งานแล้วหลายรายการด้วย base::WriteJson() โดยยังคงลักษณะการทำงานของการแสดงผลสตริงว่างเมื่อล้มเหลวในกรณีที่ไม่ได้ตรวจสอบค่าที่แสดงผล (crrev.com/c/6969134, crrev.com/c/6929101, ข้อบกพร่อง: 443929217) ต้องเลือกใช้ตัวเลือกการแยกวิเคราะห์ JSON ที่ไม่เป็นไปตามข้อกำหนดอย่างชัดเจน (เช่น การอนุญาตความคิดเห็น) ใน base::JSONReader::Read และ base::JSONReader::ReadAndReturnValueWithError (crrev.com/c/6990988, crrev.com/c/6980533, ข้อบกพร่อง: 446188265) นำ #pragma allow_unsafe_bufferspragma ระดับไฟล์ออกหลังจากการพยายามสร้างช่วงด้วยตนเอง (crrev.com/c/6778035, Bug: 409340989) ล้างการใช้งานมาโคร LazyInstance ที่รั่ว (crrev.com/c/6781377, Bug: 432815283) รวมส่วนหัวที่ขาดหายไปสำหรับ http_response_headers.h ผ่าน IWYU (crrev.com/c/6894196, ข้อบกพร่อง: 40216326)
  • ความปลอดภัยของหน่วยความจำ (การแปลงเป็นช่วง): แปลงตัวชี้จำนวนมากในไดเรกทอรี chrome/ เป็นช่วงโดยอัตโนมัติสำหรับการสร้าง Linux และเพิ่ม CHECK ที่ไม่ร้ายแรงในกรณีที่พารามิเตอร์ขนาดถือว่าซ้ำซ้อน (crrev.com/c/6734592, ข้อบกพร่อง: 431824299)
  • การทดสอบ: ปิดใช้ testDoesntCrashOnClosingBrowserFromAsyncScript ชั่วคราวใน macOS (crrev.com/c/6995358, ข้อบกพร่อง: 446461733) แก้ไขการสะกดชื่อเมธอดทดสอบที่เกี่ยวข้องกับ "ใบรับรอง" (crrev.com/c/6950683) ไฟล์ //chrome/test GN ที่จัดรูปแบบอัตโนมัติ (crrev.com/c/6789277, Bug: 40760278)
  • FedCM: เปิดตัวฟังก์ชัน ShouldShowAccountsPassiveDialog ใน IdentityDialogController เพื่อตรวจสอบแบบซิงโครนัสว่าควรแสดงกล่องโต้ตอบบัญชีหรือไม่ ซึ่งแก้ไขข้อขัดข้องที่เกี่ยวข้องกับการตรวจสอบแบบอะซิงโครนัสและการวัดผล DevTools (crrev.com/c/6780413, ข้อบกพร่อง: 425801332)
  • DSE Prewarm: เพิ่ม Page.setPrewarmingAllowed ลงในโปรโตคอล DevTools เพื่อเป็นโซลูชันระยะสั้นในการเปิดหรือปิดใช้การอุ่นเครื่องด้วยตนเอง แก้ไขการทดสอบที่เกี่ยวข้องเพื่อให้แน่ใจว่าการทดสอบจะโต้ตอบกับหน้าหลักได้อย่างถูกต้อง (crrev.com/c/6847287, Bug: 431928370) เปิดใช้ฟีเจอร์ DSEPrewarm ใน fieldtrial_testing_config.json สำหรับ macOS และ Windows หลังจากแก้ไขความไม่เสถียร (crrev.com/c/6951835, Bug: 431928370, Bug: 435621391) (หมายเหตุ: เราได้เปลี่ยนกลับทั้งคำสั่ง CDP และการเปิดใช้การทดสอบภาคสนามเนื่องจากเป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบสำหรับผู้ใช้ WebDriver ที่ได้รับเป้าหมายที่ไม่คาดคิด และทำให้เกิดปัญหาอื่นๆ ที่เกี่ยวข้องตามมา (crrev.com/c/6966133, crrev.com/c/6966161, ข้อบกพร่อง: 445883308))
  • การล้างข้อมูล: นำการอ้างอิงที่เหลืออยู่ของโปรเจ็กต์ WebLayer ที่ไม่รองรับในโค้ด Android ออก (crrev.com/c/6792520, ข้อบกพร่อง: 40272607)

ChromeDriver 141

ฟีเจอร์ใหม่

  • การทดสอบ: เพิ่มการรองรับแฟล็ก --enable-per-test-tracing ใน run_wpt_tests.py ให้ตรงกับลักษณะการทำงานของ run_web_tests.py ซึ่งจะดึงเหตุการณ์การติดตาม JSON จากบัฟเฟอร์ ChromeDriver ภายในและบันทึกลงในไดเรกทอรีผลการทดสอบ (crrev.com/c/6820247, Bug: 434017035)

การแก้ไขข้อบกพร่อง

  • การวินิจฉัย: ป้องกันไม่ให้ ChromeDriver พิมพ์ สแต็กเทรซ ภายในของตัวเองเมื่อแสดงข้อผิดพลาด kTabCrashed วิธีนี้จะช่วยไม่ให้ผู้ใช้สับสน ในขณะที่ยังคงมั่นใจได้ว่าสแต็กเทรซข้อขัดข้องของโปรแกรมแสดงผลจะยังคงอยู่ในบันทึก (crrev.com/c/6841669, ข้อบกพร่อง: 395131239)

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

  • มาตรฐาน C++: แทนที่การเรียกใช้ memset ที่อาจไม่ปลอดภัยด้วยการเริ่มต้นแบบรวมมาตรฐาน C++ (instance = {}) ใน chrome/ เพื่อหลีกเลี่ยงการข้ามตัวสร้างและรับประกันความปลอดภัยของหน่วยความจำ (crrev.com/c/6875520, ข้อบกพร่อง: 435317390) เพิ่มคำสั่ง #include ที่ขาดหายไปสำหรับ //base/time/time.h ผ่าน IWYU (crrev.com/c/6832689, ข้อบกพร่อง: 40216326) เขียนคำสั่ง #pragma บัฟเฟอร์ที่ไม่ปลอดภัยที่บังคับใหม่ (crrev.com/c/6828538)
  • การทดสอบ: เพิ่มการทดสอบถดถอยสำหรับ crbug.com/413382905 (crrev.com/c/6879417)
  • การเปลี่ยนมุมมอง: แก้ไขการเปลี่ยนมุมมองอีกครั้งโดยอัปเดตงานที่ทำก่อนที่สัญญาที่เสร็จสมบูรณ์จะได้รับการแก้ไข หลังจากที่การย้อนกลับแบบคาดการณ์ก่อนหน้านี้ซึ่งลิงก์กับการทดสอบ ChromeDriver ที่ล้มเหลวได้รับการพิสูจน์แล้วว่าไม่ถูกต้อง (crrev.com/c/6846765, relanding crrev.com/c/6806850 after revert crrev.com/c/6808537)

ChromeDriver 140

การแก้ไขข้อบกพร่อง

  • การเลือกเป้าหมาย: แก้ปัญหาที่หน้าต่างเครื่องมือสำหรับนักพัฒนาเว็บอาจแข่งกับหน้าหลักเพื่อรับการเลือกเป็นหน้าต่างหลักเมื่อเปิด Chrome ด้วย --auto-open-devtools-for-tabs ตอนนี้ ChromeDriver จะยกเว้นเป้าหมายที่นำหน้าด้วย devtools:// อย่างชัดเจนในระหว่างการกำหนดหน้าต่างหลัก (crrev.com/c/6769505, ข้อบกพร่อง: 427908560)
  • การเลือกเป้าหมาย: ป้องกันไม่ให้ ChromeDriver คำนวณจุดศูนย์กลางในมุมมองขององค์ประกอบอย่างไม่ถูกต้องโดยการไม่สนใจการตัดoverflow:hiddenที่บรรพบุรุษกำหนด ซึ่งจะทำให้การคำนวณสอดคล้องกับข้อกำหนดของ WebDriver และสถานการณ์ PerformActions อื่นๆ (crrev.com/c/6735230, ข้อบกพร่อง: 42322257)
  • Android: แก้ไขฟังก์ชัน CheckAppInstalled ใน Android เวอร์ชันเก่า (ก่อน Android 11) ที่ไม่รองรับแฟล็ก --user cur สำหรับเครื่องมือจัดการแพ็กเกจ (crrev.com/c/6785949, ข้อบกพร่อง: 433885051)
  • การทดสอบ: แก้ไขความไม่เสถียรในชุดโปรแกรมทดสอบ chromedriver_py_tests ที่เกิดจากฟีเจอร์ DSEPrewarm ตอนนี้ ChromeDriver จะปิดใช้ทริกเกอร์การอุ่นเครื่องล่วงหน้าขณะที่ไคลเอ็นต์ CDP เชื่อมต่ออยู่เพื่อป้องกันไม่ให้จำนวนเป้าหมายไม่เป็นไปตามที่คาดไว้ระหว่างการทดสอบ (crrev.com/c/6764274, ข้อบกพร่อง: 423465927, ข้อบกพร่อง: 431928370)
  • การทดสอบ: เปลี่ยนกลับการเพิ่มฟังก์ชัน ShouldShowAccountsPassiveDialog ลงใน IdentityDialogController (ส่วนหนึ่งของ FedCM) ซึ่งทำให้เกิดการถดถอย (crrev.com/c/6780413, ข้อบกพร่อง: 425801332)

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

ChromeDriver 139

การแก้ไขข้อบกพร่อง

  • โครงสร้างการเริ่มต้น: อัปเดตโครงสร้างการเริ่มต้น ChromeDriver เพื่อให้ยังคงใช้งานร่วมกับการอัปเดต Selenium WebDriver v4.16.0 ได้ (crrev.com/c/6630600)
  • การแยกวิเคราะห์อาร์กิวเมนต์: รวมอาร์กิวเมนต์ --js-flags หลายรายการ (คล้ายกับวิธีจัดการ --enable-features) แทนที่จะใช้เฉพาะรายการสุดท้ายที่ระบุ ซึ่งจะช่วยปรับปรุงความสามารถในการใช้งานเมื่อส่งแฟล็ก V8 ที่ซับซ้อน (crrev.com/c/6612042, ข้อบกพร่อง: 421941798)

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

  • ความปลอดภัยของหน่วยความจำ (การแปลงเป็นช่วง): แทนที่การใช้งาน base::MakeStringPiece() ที่เลิกใช้งานแล้วด้วย std::string_view ใน //chrome/test (crrev.com/c/6628089, ข้อบกพร่อง: 422940464) รวม base/strings/string_view_util.h เมื่อมีการใช้ base::as_string_view() เพื่อเตรียมพร้อมสำหรับการย้ายข้อมูลเนมสเปซในอนาคต (crrev.com/c/6625024, ข้อบกพร่อง: 423048781)
  • มาตรฐาน C++: ปรับปรุงการปฏิบัติตามข้อกำหนดของ Include What You Use (IWYU) ใน //chrome โดยการรวม <vector> (crrev.com/c/6652818), base/notimplemented.h (และนำ base/notreached.h ออกเมื่อไม่ได้ใช้) (crrev.com/c/6655452, ข้อบกพร่อง: 41493641), base/strings/string_util.h (crrev.com/c/6607646), base/strings/string_number_conversions.h (crrev.com/c/6593576) อย่างชัดเจน และนำการรวม base/debug/stack_trace.h ที่ไม่จำเป็นออก (crrev.com/c/6622838)
  • การทดสอบ: พอร์ตตัวเลือก --driver-logging ไปยัง run_wpt_tests.py เพื่อให้สคริปต์สามารถทิ้ง ChromeDriver และเบราว์เซอร์ stderr ได้แม้ในระดับการแสดงรายละเอียดที่ต่ำกว่า (crrev.com/c/6608138, ข้อบกพร่อง: 421262910)
  • การทดสอบ: เปิดใช้การทดสอบการผสานรวม ChromeDriver ที่ปิดใช้ก่อนหน้านี้อีกครั้ง ได้แก่ การทดสอบภาพหน้าจอ (testTakeElementScreenshot*) (crrev.com/c/6598797, ข้อบกพร่อง: 42321815), การทดสอบการปิดหน้าต่างผ่าน Javascript (testCloseWindowUsingJavascript*) (crrev.com/c/6598978, ข้อบกพร่อง: 42321150) และheadless-shellการทดสอบขนาดหน้าต่าง (crrev.com/c/6621336, ข้อบกพร่อง: 42323661)
  • การทดสอบ: แก้ไข run_wpt_tests.py --stable เพื่อระบุและใช้ Clank (Android) เวอร์ชันเสถียรปัจจุบันอย่างถูกต้องโดยการแยกวิเคราะห์ APK และอัปเดตสคริปต์เพื่อดาวน์โหลด ChromeDriver เวอร์ชันที่เกี่ยวข้องจาก Chrome สำหรับการทดสอบ (CfT) ลงในไดเรกทอรีชั่วคราวแทนที่จะทำให้การชำระเงินเสียหาย (crrev.com/c/6635694, ข้อบกพร่อง: 402548382)
  • สร้างโครงสร้างพื้นฐาน: นำการขึ้นต่อกันในการสร้างที่ไม่จำเป็นใน write_build_config.py ออกโดยไม่อนุญาตให้เป้าหมาย android_resources() มีไฟล์ Manifest เนื่องจากตอนนี้แอตทริบิวต์เฉพาะ (crrev.com/c/6625266, ข้อบกพร่อง: 413331591) จะจัดการการผสานไฟล์ Manifest และการตั้งชื่อแพ็กเกจ R.java แล้ว
  • FedCM: แก้ไขแฟล็กฟีเจอร์การกำหนดค่า Finch ที่เกี่ยวข้องกับ FedCM (crrev.com/c/6614137, ข้อบกพร่อง: 421959289)

ChromeDriver 138

ฟีเจอร์ใหม่

  • การจัดการฟีเจอร์การแสดงผล: อัปเดตลักษณะการทำงานของ ChromeDriver สำหรับกลุ่มวิวพอร์ตให้ตรงกับมติล่าสุดของกลุ่มงาน CSS โดยตอนนี้จะแสดงผลอาร์เรย์ที่มีกลุ่มเดียวอย่างสม่ำเสมอเมื่อใช้อุปกรณ์แบบพับได้ในลักษณะแบนราบ หรือสำหรับอุปกรณ์แบบพับไม่ได้ทั้งหมด ซึ่งจะตรงกับลักษณะการทำงานของ Media Query และลดความเสี่ยงในการเก็บลายนิ้วมือ (crrev.com/c/6469455, ข้อบกพร่อง: 414430842)
  • ค่ากำหนดและสถานะในเครื่อง (Android): เพิ่มการรองรับความสามารถ localState และ prefs เมื่อเรียกใช้ ChromeDriver กับอุปกรณ์ Android ซึ่งต้องใช้ ADB และต้องมีฟีเจอร์แฟล็ก user-data-dir ที่กำหนดเอง โดยปัจจุบันจะเริ่มต้นสถานะด้วยเทมเพลตเริ่มต้น (crrev.com/c/6397155, Bug: 406427226)

การแก้ไขข้อบกพร่อง

  • ความเสถียร: แก้ไขข้อขัดข้องของ ChromeDriver ที่เกิดขึ้นใน macOS เมื่อผู้ใช้ปิดกล่องโต้ตอบประสบการณ์การใช้งานครั้งแรก (FRE) ผ่านปุ่ม "ต่อไป" ข้อขัดข้องเกิดจากการลบล้างสถานะข้อผิดพลาด kTargetDetached และพยายามเข้าถึง WebView ที่ไม่ถูกต้อง (crrev.com/c/6538867, Bug: 410599467)
  • การทดสอบประสิทธิภาพ: แก้ไขโปรแกรมเรียกใช้การทดสอบ crossbench ในบ็อตการระบุตำแหน่งของ Windows ซึ่งพยายามค้นหาไบนารีของ ChromeDriver อย่างไม่ถูกต้องโดยใช้เส้นทาง ../Release_x64 ที่ล้าสมัยเมื่อมีการส่ง --browser=release_x64 ทำให้ระบบกลับไปดาวน์โหลดไบนารีรุ่นเก่าแทนที่จะใช้บิลด์ในเครื่อง (crrev.com/c/6502134)

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

  • ความปลอดภัยของหน่วยความจำ (การแปลงเป็นช่วง): แทนที่พอยน์เตอร์ที่ไม่ได้ตรวจสอบใน WebSocket::OnReadDuringHandshake และ WebSocket::OnReadDuringOpen ด้วย base::span เพื่อแก้ไขคำเตือน unsafe-buffer-usage (crrev.com/c/6557346, ข้อบกพร่อง: 354307328) นำ #pragma allow_unsafe_buffers pragmas ที่ไม่จำเป็นออกใน chrome/test/chromedriver ซึ่งไม่จำเป็นอีกต่อไปหลังจากการย้ายข้อมูลอื่นๆ (crrev.com/c/6503154, Bug: 414858406)
  • มาตรฐาน C++: นำคำสั่ง #include "url/gurl.h" และ #include <queue> ที่เกินความจำเป็นออกในส่วนหัว chrome/ ทั้งหมด และเพิ่มการประกาศล่วงหน้าในที่ที่เหมาะสมเพื่อปรับปรุงเวลาในการคอมไพล์ (crrev.com/c/6578272, crrev.com/c/6570349, ข้อบกพร่อง: 40318405)
  • การย้ายข้อมูล API: ย้ายข้อมูล RSAPrivateKey ไปยัง crypto::PrivateKey และ SHA256HashString ไปยัง crypto::Sha256 เพื่อล้างกรณีการจัดการข้อผิดพลาดที่ล้าสมัยเนื่องจาก API การสร้างคีย์ใหม่นั้นเชื่อถือได้ (crrev.com/c/6490294, ข้อบกพร่อง: 372283556)
  • การทดสอบ: เพิ่มแอตทริบิวต์ OwnContributionEstimate ลงในคำสั่งการทำงานอัตโนมัติของ Compute Pressure API (ทั้งการติดตั้งใช้งาน CDP และ testdriver) (crrev.com/c/6373001, ข้อบกพร่อง: 402033762)
  • การทดสอบ: แก้ไขการทดสอบการผสานรวมที่ยืนยัน ClearDisplayFeatures ในบ็อตการรวมอย่างต่อเนื่อง (CFT) โดยการลดความซับซ้อนของการยืนยันเพื่อตรวจสอบว่าส่วนวิวพอร์ตถูกล้างกลับไปเป็นขนาดวิวพอร์ตเริ่มต้น (crrev.com/c/6535067, ข้อบกพร่อง: 417195296)
  • การทดสอบ: เพิ่มระยะหมดเวลาสำหรับการทดสอบ WebDriver ของ Protected Audience API เพื่อแก้ไขความไม่เสถียรในบ็อต CI ที่ช้ากว่า (crrev.com/c/6494277)

ChromeDriver 137

ฟีเจอร์ใหม่

  • การจัดการฟีเจอร์การแสดงผล: เพิ่มคำสั่ง ChromeDriver เพื่อจำลองและล้างฟีเจอร์การแสดงผล ซึ่งเป็นการใช้ข้อกำหนดด้านการทำงานอัตโนมัติสำหรับ Viewport Segments API (CSS และ JS) ซึ่งช่วยให้นักพัฒนาแอปทดสอบสถานการณ์การพับหรือบานพับในอุปกรณ์แบบ 2 หน้าจอหรือแบบพับได้โดยใช้โปรแกรมได้ (crrev.com/c/6368674, ข้อบกพร่อง: 40137084)
  • BiDi: อัปเดต ChromeDriver ให้เรียกใช้ BiDi Mapper ในเป้าหมายที่ซ่อนไว้โดยค่าเริ่มต้น ซึ่งจะป้องกันไม่ให้หน้า data:, ของเครื่องมือจับคู่รบกวนการดำเนินการทดสอบและการมองเห็น หากต้องการแก้ไขข้อบกพร่องของเครื่องมือจับคู่ ไคลเอ็นต์สามารถส่งแฟล็ก --debug-bidi-mapper เพื่อดำเนินการในแท็บที่มองเห็นได้ (crrev.com/c/6441064, relanding crrev.com/c/6433672 หลังจากเปลี่ยนกลับ crrev.com/c/6439633, ข้อบกพร่อง: 402339952)

การแก้ไขข้อบกพร่อง

  • BiDi: ป้องกันไม่ให้ ChromeDriver ปิดเซสชันเบราว์เซอร์ทั้งหมดอย่างไม่ถูกต้องเมื่อประมวลผลคำสั่ง BiDi (เช่น browsingContext.close) หากไม่สามารถติดตามเป้าหมายที่สร้างโดย CDP หรือเซสชัน BiDi อื่นๆ ตอนนี้ระบบจะซิงค์แท็บระดับบนสุดอย่างชัดเจนก่อนที่จะตัดสินใจปิดเบราว์เซอร์ (crrev.com/c/6440293, ข้อบกพร่อง: 42323838)
  • BiDi: สอดคล้องกับข้อกำหนด BiDi ของ WebDriver ต้นทางโดยตรวจสอบว่า ChromeDriver จะนำความสามารถ goog:channel ออกหากมีการส่งเป็นสตริงว่าง ซึ่งจะถือว่าเหมือนกับไม่มีช่อง (crrev.com/c/6438865, ข้อบกพร่อง: 409282307)
  • อินพุต: แก้ไขปัญหาที่เหตุการณ์การแตะและเคอร์เซอร์ล้มเหลวหรือทำงานไม่ถูกต้องโดยการอัปเดต ChromeDriver ให้รองรับพิกัด x และ y ที่เป็นเศษส่วน (จุดลอยตัว) ในคำสั่งย้ายเคอร์เซอร์ (crrev.com/c/6440834, ข้อบกพร่อง: 409684333)
  • การเลือกเป้าหมาย: ป้องกันไม่ให้ iframe นอกกระบวนการ (OOPIF) ของ PDF ที่เปิดในมุมมองผู้ใช้ชั่วคราว (เมื่อปิดใช้ฟีเจอร์ PdfOopif) ปรากฏในรายการเป้าหมายระดับบนสุด เราได้ขยายตรรกะการกรองเพื่อยกเว้นเป้าหมายที่นำหน้าด้วย chrome-extension:// อย่างถูกต้อง (crrev.com/c/6383500, ข้อบกพร่อง: 396611138)

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

  • มาตรฐาน C++: เปลี่ยนกลับไปใช้ std::string_view สำหรับชื่อไฟล์ใน LogMessage และเหตุการณ์การติดตาม ซึ่งแก้ไขปัญหาเกี่ยวกับการจัดการสตริงที่ลงท้ายด้วยค่าว่างซึ่งทำให้เกิดการเปลี่ยนกลับก่อนหน้านี้ (crrev.com/c/6430129, เปลี่ยนกลับไปใช้ crrev.com/c/6395097, เปลี่ยนกลับไปใช้ crrev.com/c/6387020 หลังจากเปลี่ยนกลับ crrev.com/c/6383699)
  • มาตรฐาน C++: อัปเดตการเรียก Environment::GetVar ใน //chrome เพื่อใช้ API ที่ส่งคืน std::optional แทนพารามิเตอร์ขาออก (crrev.com/c/6417343, ข้อบกพร่อง: 400758498)
  • มาตรฐาน C++: แยกตัวช่วยจัดการเฉพาะ Windows ออกจาก win_util.h ไปยังส่วนหัว windows_handle_util.h โดยเฉพาะเพื่อหลีกเลี่ยงปัญหาการอ้างอิงแบบวงกลม (crrev.com/c/6418805, ข้อบกพร่อง: 406023316)
  • การทดสอบ: เพิ่มตัวแฮนเดิลโดเมน Browser เฉพาะ Android และใช้ Browser.getWindowForTarget API เพื่อรองรับการทดสอบการสร้างหน้าต่าง Android (crrev.com/c/6427605, ข้อบกพร่อง: 404932444)
  • การทดสอบ: แก้ไขความไม่เสถียรในการทดสอบ macOS ที่เกิดจากส่วนขยายใช้เวลานานเกินไปในการเริ่มต้น (crrev.com/c/6423229, ข้อบกพร่อง: 407804497)
  • การทดสอบ: ปิดใช้การสร้าง user-data-dir แบบขนานใน testBrowserWithUsedUserDataDir ชั่วคราวเมื่อเรียกใช้กับ chrome-headless-shell เนื่องจากขัดแย้งกับการล็อกแบบพิเศษใน macOS (crrev.com/c/6470455, ข้อบกพร่อง: 411407649, ข้อบกพร่อง: 380903149)
  • ส่วนขยาย: อัปเดตการทดสอบ Chrome ให้ผ่านเมื่อเปิดใช้ExtensionManifestV2Unsupportedการทดลองภาคสนาม นี่เป็นขั้นตอนพื้นฐาน แม้ว่าช่วงทดลองใช้จะยังคงปิดใช้ไว้จนกว่าจะมีการอัปเดตในที่เก็บข้อมูลอื่นๆ (crrev.com/c/6415997, Bug: 367395349) (หมายเหตุ: ความพยายามก่อนหน้านี้ในการเปิดใช้ช่วงทดลองใช้นี้ผ่านการกำหนดค่าถูกเปลี่ยนกลับ crrev.com/c/6397497 เปลี่ยนกลับ crrev.com/c/6358257)
  • ทรัพยากร Dependency: อัปเดตทรัพยากร Dependency ของ catapult ด้วยตนเอง และอัปเดตไฟล์ pydeps ที่เกี่ยวข้อง รวมถึงการอ้างอิง devil_util (crrev.com/c/6480814, crrev.com/c/6466865, relanding crrev.com/c/6406098 หลังจากเปลี่ยนกลับ crrev.com/c/6448910, ข้อบกพร่อง: 397459590)

ChromeDriver 136

ฟีเจอร์ใหม่

  • วงจรของเบราว์เซอร์: เพิ่มความสามารถเฉพาะของ Chrome quitGracefully ที่บังคับให้ ChromeDriver พยายามหยุดเบราว์เซอร์อย่างถูกต้อง (โดยใช้ Browser.close หรือ SIGTERM) แทนที่จะใช้ SIGKILL ตามค่าเริ่มต้น ซึ่งจะช่วยให้ดีบักเกอร์อย่าง rr มีเวลาในการทิ้งการบันทึกก่อนที่กระบวนการจะสิ้นสุด (crrev.com/c/6322538, relanding crrev.com/c/6269180 หลังจากเปลี่ยนกลับชั่วคราว crrev.com/c/6320536, Bug: 339644807)
  • การทดสอบ: ตรวจสอบrun_wpt_tests.py --wrapperอาร์กิวเมนต์โดยสร้างสคริปต์ Wrapper ชั่วคราวที่นำหน้าไบนารีของเบราว์เซอร์ด้วยดีบักเกอร์ (เช่น rr) และอาร์กิวเมนต์ของดีบักเกอร์ วิธีนี้จะช่วยแก้ปัญหาที่ ChromeDriver ไม่สามารถแทนที่ไบนารีได้โดยตรงเมื่อมีการประมวลผล args เป็นสวิตช์ (crrev.com/c/6271108, Bug: 339644807)
  • การทดสอบ: เปิดใช้การแปลโดยใช้ค่ากำหนดใน TranslateEnabledTest เพื่อรองรับสภาพแวดล้อมการทดสอบที่ ChromeDriver จัดการกระบวนการของเบราว์เซอร์และข้ามข้อจำกัดใหม่ของ --remote-debugging-port เมื่อ --user-data-dir เป็นแบบโดยนัย (crrev.com/c/6354089, ข้อบกพร่อง: 327797500)
  • DevTools: เพิ่มการรองรับฟีเจอร์อินสแตนซ์หลายรายการของ DevTools เพื่อเปิดแท็บใหม่ในหน้าต่างอื่นบน Android (crrev.com/c/6352169, ข้อบกพร่อง: 401269942, ข้อบกพร่อง: 382183406)

การแก้ไขข้อบกพร่อง

  • การเลือกเป้าหมาย: แก้ไขปัญหาที่ระบบไม่ได้กรอง iframe นอกกระบวนการ (OOPIF) ของ PDF ที่เปิดในมุมมองผู้ใช้ชั่วคราวออกจากรายการเป้าหมายระดับบนสุดเมื่อปิดใช้ฟีเจอร์ PdfOopif เราได้ขยายตัวกรองให้รวมคำนำหน้า chrome-extension ซึ่งจะแก้ไขข้อบกพร่องและครอบคลุมส่วนขยาย Chrome MV3 ที่สร้างแท็บ (crrev.com/c/6383500, ข้อบกพร่อง: 396611138)
  • การเลือกเป้าหมาย: แก้ไขการถดถอยที่ทำให้คำสั่ง getWindowHandles() ล้มเหลวโดยมีสถานะ connection refused เมื่อกำหนดเป้าหมายเป็นแอป Chrome ที่แพ็กเกจ (crrev.com/c/6317161, ข้อบกพร่อง: 396622746)

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

  • มาตรฐาน C++: เปลี่ยนแปลงการใช้ std::string_view สำหรับชื่อไฟล์ใน LogMessage และเหตุการณ์การติดตาม เพื่อปรับปรุงความเข้ากันได้กับโครงสร้างการบันทึกของ Rust ที่ไม่รับประกันสตริงที่ลงท้ายด้วยค่าว่าง (crrev.com/c/6387020, relanding crrev.com/c/5765705 หลังจากเปลี่ยนกลับ crrev.com/c/6383699 และเปลี่ยนกลับอีกครั้ง crrev.com/c/6395097)
  • มาตรฐาน C++: แทนที่การเรียกใช้ base::Value::Clone() ที่ซ้ำซ้อนเพื่อเพิ่มประสิทธิภาพ (crrev.com/c/6361818) ระงับ-Wunsafe-buffers-in-libc-callsประกาศเตือนเพิ่มเติมในไฟล์เฉพาะของ Windows เพื่อล้างเอาต์พุตบิลด์ (crrev.com/c/6369920, ข้อบกพร่อง: 390223051)
  • ส่วนขยาย: ยกเลิกการเพิ่มรายการ fieldtrial_testing_config.json สำหรับระยะ ExtensionManifestV2Unsupported เนื่องจากปัญหา (crrev.com/c/6397497, ยกเลิก crrev.com/c/6358257, ข้อบกพร่อง: 367395349, ข้อบกพร่อง: 406523920)
  • เอกสารประกอบ: ปรับปรุงเอกสารประกอบการทดสอบ ChromeDriver สำหรับ Android โดยเฉพาะ (crrev.com/c/6354040)

ChromeDriver 135

ฟีเจอร์ใหม่

  • BiDi: อัปเดต BiDi Mapper เพื่อรับสิทธิ์ ChromeDriver เมื่อระบุ --enable-unsafe-extension-debugging ซึ่งจะช่วยให้ไคลเอ็นต์ WebDriver BiDi ทดสอบส่วนขยายที่ต้องใช้สิทธิ์ที่โดยปกติแล้วไคลเอ็นต์ WebDriver จะมี (crrev.com/c/6288627, ข้อบกพร่อง: 393500934) ได้อย่างมีประสิทธิภาพ

การแก้ไขข้อบกพร่อง

  • การทดสอบ: เปิดใช้ใหม่และอัปเดตความคาดหวังสำหรับการทดสอบ WDSpec หลายรายการที่ก่อนหน้านี้มีการทำเครื่องหมายว่าไม่ผ่าน ซึ่งจะคืนค่าความครอบคลุมการปฏิบัติตามข้อกำหนดสำหรับเทสต์ที่ผ่าน (crrev.com/c/6310420)

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

  • การล้างข้อมูล: นำร่องรอยทั้งหมดของ Lacros (รวมถึง IS_CHROMEOS_LACROS และข้อมูลการทดสอบที่เกี่ยวข้อง) ออกจาก chrome/test/ เนื่องจากจะเลิกใช้งาน Lacros และจะใช้ IS_CHROMEOS เป็นมาตรฐาน (crrev.com/c/6284446, ข้อบกพร่อง: 354842935)
  • การล้างข้อมูล: นำร่องรอยทั้งหมดของยูทิลิตี md5sum ออกหลังจากแทนที่ด้วย devil_util ซึ่งจะล้างการอ้างอิงบิลด์เดิม (crrev.com/c/6309939, ข้อบกพร่อง: 397452007)
  • มาตรฐาน C++: นำเนมสเปซ chrome:: ออกจาก ResultCode และ IsNormalResultCode() โดยย้ายไปยังเนมสเปซส่วนกลาง และนำการนำเข้าการเริ่มต้น ChromeOS ที่ล้าสมัยออก (crrev.com/c/6196899, ข้อบกพร่อง: 41050580)
  • ความปลอดภัยของหน่วยความจำ: ลดความซับซ้อนของการเรียก std::lower_bound ใน ChromeDriver โดยใช้ประโยชน์จาก std::ranges::lower_bound (crrev.com/c/6223172, ข้อบกพร่อง: 392116519) ระงับunsafe_libc_callคำเตือนสำหรับไฟล์ที่ไม่เป็นไปตามนโยบายที่ระบุในตอนแรกเพื่อเตรียมพร้อมสำหรับการบังคับใช้ในอนาคต (crrev.com/c/6187925, ข้อบกพร่อง: 390223051) ทำเครื่องหมายค่าที่ส่งคืนของ std::to_array เป็น constexpr เพื่อปรับปรุงความปลอดภัยและการประเมินเวลาคอมไพล์ (crrev.com/c/6298909)

ChromeDriver 134

ฟีเจอร์ใหม่

  • การลดการติดตามการเข้าออก (DIPS): รองรับ ChromeDriver ที่กลับมาลงจอดอีกครั้งสำหรับการลดการติดตามการเข้าออก โดยใช้คำสั่ง RunBounceTrackingMitigations เราได้ปรับโครงสร้างการทดสอบการผสานรวมเพื่อใช้หน้าเว็บที่แตกต่างกัน เพื่อให้มั่นใจว่าระบบจะบันทึกการตีกลับแบบมีสถานะอย่างถูกต้องก่อนที่จะดำเนินการคำสั่ง ฟีเจอร์นี้รองรับnav-tracking-mitigationsข้อกำหนดและได้รับการติดตั้งใช้งานใน //chrome (crrev.com/c/4935955, Bug: 1474656) (หมายเหตุ: เดิมเพิ่มใน crrev.com/c/4873672 และต่อมาได้เปลี่ยนกลับ)
  • BiDi: อัปเดต ChromeDriver ให้ใช้พร็อพเพอร์ตี้ส่วนขยาย BiDi ของ WebDriver มาตรฐานที่มีคำนำหน้า goog: เพื่อให้สอดคล้องกับการเปลี่ยนแปลง chromium-bidi ต้นทาง ไม่อนุญาตให้ใช้พร็อพเพอร์ตี้ channel รุ่นเดิมอีกต่อไป (crrev.com/c/6179410)
  • Windows: เพิ่มทรัพยากรเวอร์ชันลงในไบนารี chromedriver.exe ใน Windows (crrev.com/c/6114586, ข้อบกพร่อง: 385300323)

การแก้ไขข้อบกพร่อง

  • MPArch/Targets: แก้ไขการถดถอยที่ทำให้มีการค้นพบและแนบเป้าหมายส่วนขยาย Chrome (chrome-extension://) อย่างไม่ถูกต้องในระหว่างการกำหนดเป้าหมายหลักใน ChromeOS ซึ่งทำให้คำสั่งต่อๆ ไป (เช่น การนำทาง) ล้มเหลว ตอนนี้ระบบจะข้ามเป้าหมายของส่วนขยายอย่างถูกต้องในระยะเริ่มต้นนี้ (crrev.com/c/6183202, ข้อบกพร่อง: 385241097)
  • MPArch/Targets: แก้ไขการเกิดปัญหาซ้ำอีกรายการหนึ่งซึ่งเป้าหมายแท็บสำหรับส่วนขยาย background_page ไม่ได้รับการกรองอย่างถูกต้องจากมุมมองเว็บระดับบนสุดเมื่อปิดใช้การรองรับเป้าหมายส่วนขยาย (crrev.com/c/6160774, ข้อบกพร่อง: 385731198)
  • MPArch/การนำทาง: แก้ไขปัญหาที่แท็บอาจไม่มีหน้าเว็บที่ใช้งานอยู่ชั่วขณะในระหว่างการเปิดใช้งาน MPArch ซึ่งทำให้ ChromeDriver เห็นว่าแท็บอยู่ในสถานะข้อผิดพลาดอย่างไม่ถูกต้อง ตอนนี้ ChromeDriver จะรอให้แท็บโหลดหน้าใหม่และทำการนำทางให้เสร็จสมบูรณ์ก่อนที่จะแก้ไขสถานะ (crrev.com/c/6177606)
  • การประมวลผลบันทึก: แก้ไขข้อขัดข้อง (DCHECK ล้มเหลวใน base::Value()) ที่เกิดจากการตัดสตริงบันทึกที่มีอักขระแบบหลายไบต์อย่างไม่เหมาะสม เราได้อัปเดตตรรกะให้ใช้การตรวจหาขอบเขต UnicodeString แทนการตรวจสอบความยาว std::string แบบง่าย เพื่อให้มั่นใจว่ามีจุดรหัสที่ถูกต้อง (crrev.com/c/6210809, Bug: 367752739)
  • การทดสอบ: ย้าย WPT ส่วนใหญ่ที่เกี่ยวข้องกับการแสดงผลล่วงหน้า (ยกเว้นบางรายการที่มีปัญหาเกี่ยวกับ API ที่ทราบ) จาก content_shell ไปยัง headless_shell เนื่องจากการปรับโครงสร้าง MPArch ล่าสุดทำให้ ChromeDriver เรียกใช้ได้อย่างถูกต้อง (crrev.com/c/6168830, ข้อบกพร่อง: 42323502, ข้อบกพร่อง: 366257368)

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

  • มาตรฐาน C++: แทนที่การใช้งาน base::ranges ด้วย std::ranges มาตรฐาน (crrev.com/c/6200893, crrev.com/c/6177197, ข้อบกพร่อง: 386918226) เขียนรูปแบบ b ? "true" : "false" ใหม่ให้ใช้ base::ToString(bool) เมื่อเป็นไปได้ (crrev.com/c/6165810, ข้อบกพร่อง: 335797528) นำฟังก์ชัน StringPrintfNonConstexpr() ที่ไม่ปลอดภัยออกและแทนที่ด้วยทางเลือกในการจัดรูปแบบสตริงที่ปลอดภัยกว่า (crrev.com/c/6149756) แทนที่การคำนวณตัวชี้ (+ std::size) ด้วยตัววนซ้ำ begin/end มาตรฐานเพื่อแก้ไขคำเตือนเกี่ยวกับบัฟเฟอร์ที่ไม่ปลอดภัย (crrev.com/c/6217045, ข้อบกพร่อง: 392116519)
  • การล้างข้อมูล: นำแฟล็กฟีเจอร์ FedCmIdpSigninStatus และแฟล็กรันไทม์ (crrev.com/c/6111321, ข้อบกพร่อง: 381211734) ออก (หมายเหตุ: เราได้ย้อนกลับความพยายามในการนำออกก่อนหน้านี้ crrev.com/c/6082405 เนื่องจากเกิดการหยุดทำงาน)

ChromeDriver 133

ฟีเจอร์ใหม่

  • สถาปัตยกรรม: ปรับโครงสร้าง ChromeDriver เพื่อรองรับสถาปัตยกรรมแบบหลายหน้า (MPArch) และเป้าหมายแท็บ ตอนนี้ WebViewImpl เชื่อมต่อกับเป้าหมายแท็บผ่าน AutoAttach แล้ว คำสั่งที่เคยมีหน้าเว็บจะค้นหาหน้าเว็บที่ใช้งานอยู่ภายใต้แท็บ การเปลี่ยนแปลงนี้ช่วยให้สามารถตรวจสอบหน้าพื้นหลังของส่วนขยาย ซึ่งตอนนี้กำหนดเป้าหมายผ่านความสามารถของ enable_extension_targets ได้แล้ว (โดยค่าเริ่มต้น ระบบจะข้ามเป้าหมายส่วนขยาย) (crrev.com/c/5961156, ข้อบกพร่อง: 379767670, ข้อบกพร่อง: 42323502) แก้ไขการเกิดปัญหาซ้ำที่รวมหน้า chrome-extension:// URL อย่างไม่ถูกต้องเป็นเป้าหมายของส่วนขยาย โดยเปลี่ยนการเลือกกลับไปเป็นเพียง type=background_page (crrev.com/c/6093588, ข้อบกพร่อง: 383141569) ย้าย enableExtensionTargets ไปไว้ในตัวเลือก Chrome แทนที่จะเป็นความสามารถระดับบนสุด (crrev.com/c/6093032)
  • คลาสสิก: รองรับการอ้างอิงองค์ประกอบที่มีหลายคีย์อีกครั้ง ตอนนี้ฟีเจอร์ที่ไม่มีในเอกสารนี้ซึ่งมักใช้เพื่อสร้างการอ้างอิงที่เข้ากันได้กับทั้งโหมด W3C และโหมดที่ไม่ใช่ W3C ได้รับการรองรับอย่างเป็นทางการและครอบคลุมในการทดสอบการผสานรวม (crrev.com/c/6063257, ข้อบกพร่อง: 379584343)

การแก้ไขข้อบกพร่อง

  • ความเสถียร: ป้องกันไม่ให้ ChromeDriver บล็อกอย่างไม่มีกำหนดเมื่อจัดการคำสั่ง browsingContext.close การใช้กลไกอื่นเพื่อพิจารณาว่าต้องปิดเบราว์เซอร์หรือไม่ ทำให้ตอนนี้ ChromeDriver จัดการพรอมต์ beforeunload ได้อย่างเหมาะสมโดยไม่หยุดชะงัก (crrev.com/c/6080431, ข้อบกพร่อง: 42323838, ข้อบกพร่อง: 379049702)
  • การนำทาง: แก้ไขข้อบกพร่องที่ทำให้หน้าจำลองที่มี URL about:blank?test ทำให้เกิดการหยุดชะงัก ตอนนี้ฮิวริสติกที่ใช้ระบุหน้าต่างใหม่ที่ไม่ตอบสนอง (baseURL==about:blank และ documentURL!=about:blank) จะจัดการ URL สตริงการค้นหาเหล่านี้เป็นกรณีพิเศษได้อย่างถูกต้อง (crrev.com/c/6038039, ข้อบกพร่อง: 377410086)
  • การนำทาง: เพิ่มตรรกะเพื่อลองส่งคำสั่งที่ล้มเหลวอีกครั้งด้วยข้อผิดพลาด AbortedByNavigation ตอนนี้ ChromeDriver จะลองใช้คำสั่งหลายครั้งก่อนที่จะหยุดทำงานพร้อมกับTimeoutข้อผิดพลาดมาตรฐาน (crrev.com/c/6012427, ข้อบกพร่อง: 42323825)
  • การวินิจฉัย: ส่งต่อข้อผิดพลาด kTargetCrashed ผ่าน NavigationTracker โดยตรง หากเป้าหมายขัดข้องระหว่างการตรวจหาการนำทาง ตอนนี้ระบบจะแสดงข้อผิดพลาดนี้ต่อผู้ใช้แทนที่จะเป็นข้อผิดพลาดทั่วไปที่หมดเวลา ซึ่งจะช่วยปรับปรุงการวินิจฉัย (crrev.com/c/6032612, Bug: 377410086)
  • Android: แก้ไขการค้นหาเป้าหมายของแท็บที่ตรึงไว้ใน chrome_android_impl.cc (crrev.com/c/6110492, ข้อบกพร่อง: 384781876)
  • การทดสอบ: แก้ไขความไม่เสถียรในการทดสอบการปรับขนาดหน้าต่างหลายรายการใน win11-arm64 (เช่น การคลิกองค์ประกอบที่ถูกบดบัง) ตอนนี้การทดสอบจะค้นหาขนาดหน้าต่างด้านในซ้ำๆ หลังจากดำเนินการปรับขนาดจนกว่าจะลงทะเบียนความสูงที่เป็นบวกได้อย่างถูกต้อง โดยคำนึงถึงการวาดหน้าต่างใหม่ที่ช้า (crrev.com/c/6012658, Bug: 378470046)
  • การทดสอบ: แก้ไขการทดสอบการผสานรวมที่ล้มเหลวหลายครั้งโดยการแมปข้อผิดพลาดในการเชื่อมต่อ Python ทั่วไปกับ WebSocketConnectionClosedException ซึ่งช่วยลดความซับซ้อนในการจัดการข้อผิดพลาด (crrev.com/c/6054134) หลีกเลี่ยงภาวะแข่งขันโดยใช้ SendCommand แทน PostCommand ในกรณีที่คาดว่าจะเกิดผลข้างเคียงในทันที (crrev.com/c/6054137) และแทนที่การพึ่งพาผลลัพธ์ในทันทีของ ExecuteScript ด้วยกลไกการตรวจหาการนำทางที่เชื่อถือได้มากขึ้น (crrev.com/c/6063040, ข้อบกพร่อง: 42323825)
  • การทดสอบ: เปลี่ยนกลับการนำแฟล็กฟีเจอร์ FedCmIdpSigninStatus ออก เนื่องจากทำให้เกิดข้อขัดข้อง (crrev.com/c/6082405, เปลี่ยนกลับ crrev.com/c/6078693, ข้อบกพร่อง: 384866916, ข้อบกพร่อง: 381211734)
  • เครื่องมือ: เพิ่มการรองรับคำสั่ง Print ในสคริปต์ log_replay (crrev.com/c/6010809, ข้อบกพร่อง: 378451938)

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

  • มาตรฐาน C++: นำฮิสโทแกรม Mojo.InvalidUTF8String ออกเพื่อให้ล้างส่วนหัว mojo สาธารณะและ IWYU ที่ตามมาได้ (crrev.com/c/6133861, ข้อบกพร่อง: 40509710, ข้อบกพร่อง: 386793084)
  • มาตรฐาน C++: หลีกเลี่ยงการจัดสรรใน WaitableEvent::Wait() โดยเปลี่ยนจาก std::list เป็น base::circular_deque (crrev.com/c/6097198)
  • มาตรฐาน C++: สร้างตัวสร้างและตัวทำลายที่ว่างเปล่าซึ่งผู้ใช้กำหนดเองเป็นค่าเริ่มต้นในโค้ดเบส chrome/ หากเป็นไปได้ (crrev.com/c/6101911, crrev.com/c/6056220, Bug: 381119547)
  • ความปลอดภัยของหน่วยความจำ (การแปลงเป็นช่วง): ย้ายข้อมูลอาร์เรย์สไตล์ C ไปยัง std::array ใน chrome/ ซึ่งเป็นส่วนหนึ่งของความพยายามในวงกว้างเพื่อแก้ไขคำเตือน -Wunsafe-buffer-usage (crrev.com/c/6043879, ข้อบกพร่อง: 378069401) ใช้ size_t อย่างเคร่งครัดในฟังก์ชันช่วง (crrev.com/c/6026238, crrev.com/c/6020621)
  • การทดสอบ: ส่ง{ref,crash}testsแบบเต็มหน้าจอต้นทางกลับไปที่ wpt_internal/ เนื่องจากตอนนี้ testdriver รองรับแล้ว (crrev.com/c/6088404)
  • การทดสอบ: แก้ไข wptrunner สำหรับ iOS เพื่อระบุตำแหน่ง Wrapper ของ ChromeDriver อย่างถูกต้องเมื่อใช้ไดเรกทอรีเอาต์พุตที่ไม่ใช่ค่าเริ่มต้น (เช่น //out/*-ios-wpt-fyi-rel/) โดยการเชื่อมต่อ --build-directory อย่างถูกต้อง (crrev.com/c/6014940, ข้อบกพร่อง: 374199289, ข้อบกพร่อง: 355218109)
  • การทดสอบ: เพิ่มการทดสอบการผสานรวม testBrowserCrashWhileWaitingForEvents เพื่อแสดงกรณีการเกิดปัญหาซ้ำที่ไคลเอ็นต์ไม่สังเกตเห็นข้อผิดพลาดร้ายแรง (crrev.com/c/6025145, ข้อบกพร่อง: 379049702)
  • การทดสอบ: ระงับ WPT บางรายการที่ขัดข้องเมื่อเรียกใช้ภายใต้ headless_shell ร่วมกับ ChromeDriver เพื่อทำให้บิลด์เดอร์เสถียร (crrev.com/c/6032163, ข้อบกพร่อง: 377410086)

ChromeDriver 132

ฟีเจอร์ใหม่

  • การทดสอบ: เพิ่มการรองรับพารามิเตอร์บรรทัดคำสั่ง repeat และ retry-limit ในการทดสอบการผสานรวม ChromeDriver โดยแมปพารามิเตอร์ดังกล่าวกับอาร์กิวเมนต์มาตรฐาน isolated-script-test-repeat และ isolated-script-test-launcher-retry-limit (crrev.com/c/5938195, ข้อบกพร่อง: 374681919) สำหรับการทดสอบที่ดำเนินการในเครื่อง (ไม่ใช่ CI) ค่าเริ่มต้นของ retry-limit มีการเปลี่ยนแปลงเป็น 0 (crrev.com/c/5953326, ข้อบกพร่อง: 374681919)
  • WebSockets: มีการใช้งาน WebSocketConnection และคลาสที่เกี่ยวข้องใน EmbeddedTestServer ซึ่งช่วยให้การทดสอบที่เกี่ยวข้องกับ WebSocket ย้ายข้อมูลออกจาก SpawnedTestServer ได้ ซึ่งรวมถึงการจัดเฟรมตามโปรโตคอลและการลงทะเบียนตัวแฮนเดิลแบบง่าย (crrev.com/c/5849732, Bug: 40812029)

การแก้ไขข้อบกพร่อง

  • ความเสถียร: แก้ไขข้อขัดข้องของ ChromeDriver ที่อาจเกิดขึ้นหากคำสั่งคลิกทำให้เบราว์เซอร์ปิด โดยการจัดการสถานะข้อผิดพลาด kTargetDetached อย่างเหมาะสมซึ่งมีการนำมาใช้ในการปรับโครงสร้างก่อนหน้านี้ (crrev.com/c/5934524, ข้อบกพร่อง: 42323264)
  • ความเสถียร: แก้ไขข้อขัดข้องเป็นระยะในการทดสอบการผสานรวม testClickNavigateRemoteToLocal บน Mac ARM64 โดยการแก้ไขภาวะแข่งขัน (crrev.com/c/5975526, ข้อบกพร่อง: 375971185)
  • การนำทาง: แก้ไขคำสั่ง GoBack และ GoForward ซึ่งก่อนหน้านี้จะทำงานไม่สำเร็จหากมีการเรียกใช้ Page.getNavigationHistory ขณะที่เอกสารกำลังเปลี่ยนจากสถานะที่ใช้งานอยู่ (แสดงว่ามีการนำทางที่กำลังดำเนินการอยู่) ตอนนี้ ChromeDriver จะลองส่งคำสั่งอีกครั้งอย่างถูกต้องในสถานการณ์นี้ (crrev.com/c/6011739, ข้อบกพร่อง: 378433873)
  • การเรียกใช้สคริปต์: ตรวจสอบว่าสคริปต์ที่ทริกเกอร์การนำทางหรือปิดหน้าต่างจะแสดงข้อผิดพลาด ScriptTimeout มาตรฐานอย่างถูกต้องหากฝั่งเบราว์เซอร์ไม่รับประกันผลลัพธ์ ซึ่งจะแจ้งให้ผู้ใช้หลีกเลี่ยงโครงสร้างการทดสอบที่ไม่ชัดเจน (crrev.com/c/5934265, ข้อบกพร่อง: 372883701)
  • การเรียกใช้สคริปต์: แก้ไขปัญหาที่ฟังก์ชันการเล่นบันทึกซ้ำล้มเหลวโดยมีข้อผิดพลาด "การตอบกลับคำสั่งที่ไม่คาดคิด" (crrev.com/c/5961142, ข้อบกพร่อง: 42323342)
  • รหัสข้อผิดพลาด: แก้ไขการจัดการข้อผิดพลาดของ ChromeDriver เพื่อไม่ให้บังคับห่อหุ้มข้อยกเว้นทั้งหมดที่มีพร็อพเพอร์ตี้ "code" ไว้ใน "ข้อผิดพลาด JavaScript" ทั่วไปอีกต่อไป ซึ่งจะช่วยให้มั่นใจได้ว่าข้อผิดพลาดมาตรฐาน เช่น "การอ้างอิงองค์ประกอบที่ล้าสมัย" (จาก call_function.js) และ "สถานะองค์ประกอบไม่ถูกต้อง" (จากฟังก์ชัน Selenium Atoms CLEAR) จะได้รับการเผยแพร่ไปยังผู้ใช้ (crrev.com/c/5937893, ข้อบกพร่อง: 42323409) อย่างถูกต้อง ปรับปรุงการจัดการข้อผิดพลาดใน GetElementTagName เพื่อตีความข้อมูลชื่อแท็กที่ขาดหายไปอย่างถูกต้องเป็น "object is not an Element" (crrev.com/c/5929087)
  • BiDi: แก้ไขปัญหาที่เซสชัน BiDi เริ่มต้นไม่สำเร็จเมื่อใช้โปรไฟล์ผู้ใช้ที่กำหนดเอง หน้าเว็บที่โหลดในโปรไฟล์ที่กำหนดเองอาจทำให้ BiDiMapper เริ่มทำงานไม่ได้ ตอนนี้ ChromeDriver จะทำให้มั่นใจว่าแท็บแรกจะโหลด data:, เสมอเพื่อให้ BiDiMapper มีพื้นที่ว่างในการทำงาน (crrev.com/c/5960656, ข้อบกพร่อง: 366886096)
  • โหมดไม่ระบุตัวตน: แก้ไขข้อบกพร่องที่ทำให้ ChromeDriver สร้างแท็บใหม่ไม่ได้ขณะทำงานในโหมดไม่ระบุตัวตน (crrev.com/c/5952980, ข้อบกพร่อง: 42323352)
  • การทดสอบ: แก้ไขความไม่เสถียรในการทดสอบการผสานรวม testScriptNavigateRemoteToLocal (ซึ่งล้มเหลวในอัตรา 8.33%) และเพิ่มการทดสอบการผสานรวม C++ เพื่อสร้างข้อผิดพลาดซ้ำและยืนยันการแก้ไขสำหรับภาวะแข่งขัน (crrev.com/c/6010867, ข้อบกพร่อง: 378387680)
  • การทดสอบ: เปิดใช้การทดสอบการผสานรวมที่ไม่เสถียรหลายรายการก่อนหน้านี้อีกครั้งใน Mac (testWindowMinimize) และ Windows (ChromeDownloadDirTest.testFileDownloadAfterTab, InvalidCertificateTest.*) รวมถึงทั่วโลก (testShadowDomFindElement, การทดสอบภาพหน้าจอขององค์ประกอบ) ย้ายการทดสอบ WPT ที่ไม่เสถียร css/css-scrollbars/ กลับไปที่ Content Shell จาก Headless Shell ชั่วคราว (crrev.com/c/5953708, crrev.com/c/5948803, crrev.com/c/5941351, crrev.com/c/5941098, crrev.com/c/5959254, Bug: 42323825, Bug: 40848017, Bug: 40736504, Bug: 40176424, Bug: 40927590)

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

  • BiDi: อัปเดตการขึ้นต่อกันของ chromium-bidi Mapper เพื่อรวมการแก้ไขล่าสุดจากต้นทางและการอัปเดตโปรโตคอล (crrev.com/c/5953339, crrev.com/c/5865478, ข้อบกพร่อง: 4226) (หมายเหตุ: เราได้เปลี่ยนกลับการเปลี่ยนแปลงของโปรแกรมแมปชั่วคราวเนื่องจาก WPT ล้มเหลว และได้นำกลับมาใช้ใหม่ในภายหลัง (crrev.com/c/5961113))
  • สถาปัตยกรรม: ลดการใช้ประโยชน์จากออบเจ็กต์เซสชันเฉพาะเธรดใน ChromeDriver เพื่อป้องกันข้อบกพร่องในการแชร์สถานะระหว่างการทดสอบ และลดความซับซ้อนของการจัดการเซสชันอย่างชัดเจน (crrev.com/c/5978486, ข้อบกพร่อง: 42323555) ปรับโครงสร้างการทดสอบการผสานรวม C++ เพื่อใช้การทดสอบที่ใช้ร่วมกัน (crrev.com/c/5971474, ข้อบกพร่อง: 42323555)
  • การทำความสะอาดข้อมูล: นำวิธีแก้ปัญหาที่เลิกใช้งานแล้วซึ่งเจาะจงสำหรับโหมด "ไม่มีส่วนหัวแบบเดิม" ออก เนื่องจากไม่มีโค้ด chrome-headless-shell เดิมใน Chrome อีกต่อไป (crrev.com/c/5961602, ข้อบกพร่อง: 42323387)
  • การล้างข้อมูล: นำไฟล์ java_tests.txt ที่ไม่ได้ใช้ออก ซึ่งเป็นส่วนที่เหลือจากการทดสอบการยอมรับ ChromeDriver ที่ถูกนำออกก่อนหน้านี้ (crrev.com/c/5970994, ข้อบกพร่อง: 357737793)
  • การทดสอบ: เพิ่มการทดสอบการผสานรวม C++ เพื่อยืนยันว่า ChromeDriver ไม่ได้สร้างเซสชันแบบขนานที่มี user-data-dir เดียวกันหรือ URL ที่รั่วไหลระหว่างเซสชันโดยไม่ถูกต้อง ซึ่งอาจทำให้เกิดความไม่เสถียร (crrev.com/c/5961137, ข้อบกพร่อง: 375312517)
  • การทดสอบ: ตรวจสอบว่าอินสแตนซ์ ChromeDriver ชั่วคราวที่การทดสอบการผสานรวมสร้างขึ้นจะปิดลงโดยเร็วที่สุดเพื่อเพิ่มพื้นที่ว่างสำหรับทรัพยากร (crrev.com/c/5997970, ข้อบกพร่อง: 375974725)

ChromeDriver 131

ฟีเจอร์ใหม่

  • BiDi: อัปเดตchromium-bidiการขึ้นต่อกันของ Mapper เป็น v0.8.0 ซึ่งรวมการอัปเดตโปรโตคอลล่าสุดและการแก้ไขข้อบกพร่อง (crrev.com/c/5899240, crrev.com/c/5865478, ข้อบกพร่อง: 4226)
  • การเข้าถึง DOM: เพิ่มการรองรับราก Shadow ที่ปิดในคำสั่ง GetElementShadowRoot ก่อนหน้านี้ คำสั่งนี้จะแสดงข้อผิดพลาด NoSuchShadowRoot เมื่อพยายามเข้าถึง Shadow Root ที่ปิดอยู่ (crrev.com/c/5923865, Bug: 372834222)
  • การเข้าถึง DOM: เพิ่มการรองรับตัวระบุหน้าต่างและเฟรม ซึ่งช่วยให้ระบบแสดงการอ้างอิงไปยังหน้าต่างหรือเฟรม (รวมถึง Iframe ของ OOP) จากสคริปต์ที่ดำเนินการเพื่อยกเลิกการอ้างอิงเพิ่มเติมได้ (crrev.com/c/5890437, crrev.com/c/5923555, ข้อบกพร่อง: 366272556, ข้อบกพร่อง: 40229283)
  • WebAuthn: ขยาย API การทำงานอัตโนมัติของ WebAuthn ให้รวมพร็อพเพอร์ตี้ userName และ userDisplayName (crrev.com/c/5905423, ข้อบกพร่อง: 367915823)

การแก้ไขข้อบกพร่อง

  • อินพุต: แก้ไขภาวะแข่งขันด้วยการคลิกเมาส์ในเฟรมระยะไกลโดยกำหนดเส้นทางเหตุการณ์ของเมาส์ไปยังบรรพบุรุษที่มีต้นทางเดียวกันที่สูงที่สุดของเฟรมเป้าหมาย แทนที่จะส่งไปยังเฟรมบนสุด (crrev.com/c/5836968, ข้อบกพร่อง: 42323535)
  • อินพุต: แก้ไขรูปแบบการประทับเวลาที่ส่งพร้อมกับคำสั่ง Input.dispatchTouchEvent จากมิลลิวินาทีเป็นวินาที เพื่อแก้ไขข้อขัดข้องในการทดสอบเหตุการณ์ตัวชี้ WPT (crrev.com/c/5924253, ข้อบกพร่อง: 360918166)
  • การทดสอบ: เปิดใช้การทดสอบ ChromeDriver หลายรายการอีกครั้งใน Mac (crrev.com/c/5923569, crrev.com/c/5922823, crrev.com/c/5921444, crrev.com/c/5920851, crrev.com/c/5921442) และ Windows (crrev.com/c/5923955) เนื่องจากไม่สามารถจำลองความล้มเหลวที่เกี่ยวข้องได้อีกต่อไป

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

  • ความปลอดภัยของหน่วยความจำ (การแปลงเป็นช่วง): แทนที่การใช้พอยน์เตอร์ที่ไม่ปลอดภัยด้วย base::span ใน net::HttpUtil (crrev.com/c/5854420) และย้ายข้อมูล base::File::WriteAtCurrentPos() ไปยังรายการที่เทียบเท่าซึ่งอิงตามช่วง (crrev.com/c/5818972) เขียนค่าตัวชี้แผนที่ใหม่ (เช่น ใน std::map, std::unordered_map) เป็น raw_ptr (crrev.com/c/5867189, ข้อบกพร่อง: 329428315)
  • มาตรฐาน C++: แทนที่มาโครแอตทริบิวต์ Abseil (ABSL_ATTRIBUTE_*) ด้วยมาโคร base/ มาตรฐาน (crrev.com/c/5852373) หลีกเลี่ยงการคัดลอกโดยไม่ตั้งใจด้วยการแทนที่สตริง/เวกเตอร์แบบส่งผ่านค่าด้วย std::string_view หรือการอ้างอิง const ในกรณีที่เหมาะสม และนำตัวระบุ const ที่ไม่เกี่ยวข้องออกจากอาร์กิวเมนต์ std::string_view (crrev.com/c/5914620, crrev.com/c/5906184, ข้อบกพร่อง: 369952985)
  • โครงสร้างพื้นฐาน: กำหนดค่า Fuchsia ให้ใช้ ChromeDriver เพื่อควบคุม web-engine (crrev.com/c/5867896, ข้อบกพร่อง: 40935291)
  • การทดสอบ: ย้ายข้อมูลการทดสอบ WebAuthn ของเฟรมที่จำกัดจากโปรแกรมเรียกใช้เชลล์เนื้อหาเดิมไปยัง Chrome ที่ไม่มีส่วนหัวด้วย ChromeDriver เนื่องจากโปรแกรมเรียกใช้เดิมจะหยุดรองรับ API ของ WebAuthn testdriver ในเร็วๆ นี้ (crrev.com/c/5920770, ข้อบกพร่อง: 372169469)

ChromeDriver 130

ฟีเจอร์ใหม่

  • BiDi: อัปเดตการอ้างอิง BiDi Mapper โดยดึงข้อมูลการอัปเดตโปรโตคอลล่าสุดและการแก้ไขข้อบกพร่องจากต้นทาง chromium-bidi (crrev.com/c/5850570, relanding crrev.com/c/5837065 after revert crrev.com/c/5840080; crrev.com/c/5717956, Bug: 4226)
  • BiDi: อัปเดต ChromeDriver เพื่อส่ง unhandledPromptBehavior ไปยัง Mapper โดยตรงผ่านคำสั่ง session.new เมื่อเริ่มต้นเซสชัน BiDi การดำเนินการนี้จะทำให้การย้ายข้อมูลจาก MapperOptions เสร็จสมบูรณ์ (crrev.com/c/5682934, crrev.com/c/5766077, Bug: 42323841, Bug: 356371297)
  • การทดสอบ: เพิ่มการรองรับอาร์กิวเมนต์ --chromedriver ให้กับสคริปต์ bisect-builds.py สำหรับบิลด์เดสก์ท็อป ซึ่งช่วยให้สคริปต์ดาวน์โหลดและใช้ ChromeDriver เวอร์ชันที่ถูกต้องโดยอัตโนมัติในระหว่างการแบ่งครึ่งสำหรับการทดสอบที่ขึ้นอยู่กับ WebDriver/ChromeDriver (crrev.com/c/5861048, ข้อบกพร่อง: 352344089)

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

  • มาตรฐาน C++: แก้ไขปัญหา "กฎ 5 ข้อ" ในคลาสต่างๆ เนื่องจากปลั๊กอินสไตล์ของ Chrome ยืนยันที่จะใช้ตัวทำลายแบบนอกบรรทัดโดยไม่บังคับให้ใช้ตัวสร้างการย้ายแบบนอกบรรทัดด้วย คอมไพเลอร์จึงลบตัวดำเนินการย้ายโดยนัยและกลับไปใช้การคัดลอกแบบเงียบๆ เราได้เพิ่มการประกาศที่ขาดหายไปเหล่านี้แล้ว (crrev.com/c/5846757, ข้อบกพร่อง: 364788123)
  • การทดสอบ: ทำความสะอาดwptrunnerสรุปผลการทดสอบโดยแทนที่สตริง chrome ที่ฮาร์ดโค้ดด้วยผลิตภัณฑ์จริงที่ใช้ และซ่อนอาร์ติแฟกต์ command ที่มีรายละเอียดมากจากเอาต์พุตสรุป (crrev.com/c/5825633, ข้อบกพร่อง: 41494889)
  • การทดสอบ: แก้ไขการทดสอบที่ล้มเหลวจำนวนมากในการทดสอบการผสานรวม ChromeDriver ใน macOS 15 (Mac15) โดยเพิ่มระยะหมดเวลาที่เฉพาะเจาะจงเป็น 2 เท่า เนื่องจากต้องใช้เวลาในการทดสอบในระบบปฏิบัติการนี้มากกว่าใน Mac14 อย่างมาก นอกจากนี้ เรายังเพิ่มการทดสอบเซ็นเซอร์เสมือน 4 รายการลงในรายการละเว้นเนื่องจากไม่เสถียร (crrev.com/c/5817455, ข้อบกพร่อง: 354939744)
  • การทดสอบ: ปิดใช้การทดสอบ ChromeDriverSiteIsolation.testClickNavigateLocalToLocal ที่ไม่เสถียรใน Mac (crrev.com/c/5806894, ข้อบกพร่อง: 361521805) และการทดสอบ ChromeDriverTest.testClickElement*ObscuredByScrollBar ที่ไม่เสถียรใน Windows 11 (crrev.com/c/5804083, ข้อบกพร่อง: 360058651)
  • การทดสอบ: นำการทดสอบการยอมรับ ChromeDriver ออก (ซึ่งดาวน์โหลด Chrome เวอร์ชันเก่าเพื่อทดสอบกับ ChromeDriver ปัจจุบัน) เนื่องจากปัญหาด้านโครงสร้างพื้นฐานหลายประการ เราอาจเพิ่มฟีเจอร์เหล่านี้อีกครั้งใน CI พร้อมการอัปเดตอัตโนมัติในภายหลัง (crrev.com/c/5812142, Bug: 357737793)

ChromeDriver 129

ฟีเจอร์ใหม่

  • BiDi: อัปเดตตัวช่วยการเริ่มต้นเซสชัน ChromeDriver เพื่อส่งคำสั่ง session.new ไปยัง BiDi Mapper ซึ่งจะช่วยให้ตัวแมปจัดการความสามารถได้โดยตรง นี่เป็นขั้นตอนแรกในการนำ MapperOptions ออก (crrev.com/c/5741432, Bug: 356371297) (หมายเหตุ: การเปลี่ยนแปลงที่เกี่ยวข้อง crrev.com/c/5754093 ซึ่งให้ unhandledPromptBehavior ที่ประมวลผลแล้วถูกเปลี่ยนกลับ crrev.com/c/5755744 เนื่องจากความครอบคลุมของการทดสอบลดลง)
  • แรงดันการคำนวณ: เพิ่มคำสั่งส่วนขยายใหม่สำหรับการจัดการแหล่งที่มาของแรงดันเสมือน ซึ่งใช้ส่วนการทำงานอัตโนมัติของข้อกำหนดแรงดันการคำนวณ ระบบจะแยกวิเคราะห์และส่งต่อคำสั่งเหล่านี้ไปยังเลเยอร์ CDP (crrev.com/c/5666583, ข้อบกพร่อง: 347031400)
  • ส่วนขยาย MV2: อัปเดตการทดสอบที่ใช้ลักษณะการทำงานของ MV2 เพื่อใช้ ScopedTestMV2Enabler เป็นส่วนหนึ่งของการทดสอบภาคสนามอย่างต่อเนื่องเกี่ยวกับการเลิกใช้งานไฟล์ Manifest V2 ของส่วนขยาย (crrev.com/c/5685054, ข้อบกพร่อง: 339061151)

การแก้ไขข้อบกพร่อง

  • การทำให้เป็นอนุกรมแบบคลาสสิก: ติดตามออบเจ็กต์ที่เห็นเมื่อทำให้ผลการดำเนินการสคริปต์ Set ใน WebDriver Classic เป็นอนุกรม เพื่อป้องกันลูปที่ไม่มีที่สิ้นสุดและยอมรับการลบล้าง Array.prototype.includes (crrev.com/c/5765833, ข้อบกพร่อง: 357472850) (หมายเหตุ: การเปลี่ยนแปลงนี้ถูกเปลี่ยนกลับในภายหลัง crrev.com/c/5773175 เนื่องจาก WPT เกิดปัญหาซ้ำ)

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

  • BiDi: อัปเดตทรัพยากร Dependency ของ BiDi Mapper เพื่อรวมการแก้ไขข้อบกพร่องและการอัปเดตโปรโตคอลล่าสุดจาก chromium-bidi (crrev.com/c/5756587, crrev.com/c/5717956, Bug: 4226)
  • ความปลอดภัยของหน่วยความจำ (การแปลงเป็นช่วง): แทนที่การใช้บัฟเฟอร์ที่ไม่ปลอดภัยใน WebSocketFrameParser::Decode, MaskWebSocketFramePayload และ WriteWebSocketFrameHeader ด้วย base::span (crrev.com/c/5764863, crrev.com/c/5743019, crrev.com/c/5722108, ข้อบกพร่อง: 40284755, ข้อบกพร่อง: 354307327) เพิ่ม #pragma allow_unsafe_buffers ใน chrome/* เพื่อเตรียมพร้อมสำหรับการแก้ไขเพิ่มเติม (crrev.com/c/5717950, ข้อบกพร่อง: 40285824) และแปลงมาโคร UNSAFE_BUFFERS() ที่ไม่เป็นไปตามข้อกำหนดเป็น UNSAFE_TODO() (crrev.com/c/5786346) เขียนฟิลด์ base::span ใหม่เป็น base::raw_span (crrev.com/c/5515096, Bug: 332587642)
  • มาตรฐาน C++: นำการใช้อาร์เรย์ที่มีความยาวตัวแปร (VLA) ที่เป็นอันตรายในฐานของโค้ดออกโดยทำเครื่องหมายความยาวของอาร์เรย์อย่างชัดเจนเป็น constexpr (crrev.com/c/5738737, ข้อบกพร่อง: 349656479) รวมส่วนหัวที่จำเป็นซึ่งดึงมาโดยอ้อมก่อนหน้านี้ (crrev.com/c/5792881)<unordered_map>
  • สถาปัตยกรรม: ยกเลิกการแยกสาขาการติดตั้งใช้งาน WebSocketEncoder โดยการเปลี่ยนกลับการย้ายข้อมูลที่หยุดชะงักไปยัง //services/network/public/cpp/server และรวมตรรกะกลับไว้ใน //net/server เพื่อให้มั่นใจว่ามีการอัปเดตที่สอดคล้องกัน (crrev.com/c/5768214, ข้อบกพร่อง: 40205564)

ChromeDriver 128

ฟีเจอร์ใหม่

  • ความสามารถ: อนุญาตให้ใช้พจนานุกรมสำหรับความสามารถ unhandledPromptBehavior โดยสอดคล้องกับโครงสร้างความสามารถมาตรฐาน แม้ว่า Mapper จะยังไม่รองรับอย่างเต็มที่ (crrev.com/c/5692204, crrev.com/c/5682934, ข้อบกพร่อง: 42323841)
  • การเริ่มต้น: เพิ่มอาร์กิวเมนต์บรรทัดคำสั่ง --ignore-explicit-port ลงใน ChromeDriver วิธีแก้ปัญหาชั่วคราวนี้จะบังคับให้ ChromeDriver ละเว้นพอร์ตที่ระบุอย่างชัดเจน และแทนที่จะค้นหาและเชื่อมโยงกับพอร์ตที่ว่าง ซึ่งจะช่วยแก้ปัญหาการแข่งขันพอร์ต TCP ระหว่างการดำเนินการทดสอบแพลตฟอร์มเว็บ (มีจุดประสงค์เพื่อนำออกหลังจาก M132) (crrev.com/c/5724574, crrev.com/c/5703976, Bug: 42323836)

การแก้ไขข้อบกพร่อง

  • เซ็นเซอร์: แก้ไขคำสั่ง ExecuteUpdateVirtualSensor ให้ใช้ SendCommand() แทน SendCommandAndGetResult() เนื่องจากคำสั่ง setSensorOverrideReadings CDP ไม่แสดงค่า (crrev.com/c/5703589)
  • FedCM: แก้ไขภาวะแข่งขันในการทดสอบ FedCM ChromeDriver โดยไม่ยืนยันว่า NoSuchDialog จะแสดงเมื่อคาดหวังให้แสดงกล่องโต้ตอบ ซึ่งจะป้องกันไม่ให้เกิดข้อผิดพลาดหากกล่องโต้ตอบปรากฏขึ้นเร็วเกินไป (crrev.com/c/5713515, ข้อบกพร่อง: 346530330)
  • การทดสอบ: เปิดใช้การทดสอบโปรแกรมตรวจสอบสิทธิ์เสมือนของ WebAuthn อีกครั้งใน Mac หลังจากแก้ไขปัญหาพื้นฐาน (crbug.com/40233722) แล้ว (crrev.com/c/5635806, Bug: 329130177)
  • ข้อความแสดงข้อผิดพลาด: แก้ไขการสะกดคำผิดในข้อความแสดงข้อผิดพลาดสำหรับคำสั่ง execute/async (crrev.com/c/5697913)

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

  • BiDi: อัปเดตการขึ้นต่อกันของ BiDi Mapper เพื่อนำฟีเจอร์โปรโตคอลล่าสุด การแก้ไขข้อบกพร่อง และการอัปเดตความคาดหวังของ WPT จากโปรเจ็กต์ต้นทาง chromium-bidi (crrev.com/c/5717956, crrev.com/c/5644823, crrev.com/c/5630727, crrev.com/c/5615110, crrev.com/c/5614670, Bug: 4226, Bug: 347863537, Bug: 324436866)
  • แทนที่การใช้งานเมธอด GrowableIOBuffer::StartOfBuffer ที่เลิกใช้งานแล้วด้วย span ซึ่งช่วยปรับปรุงความปลอดภัยของหน่วยความจำโดยการกำจัดพอยน์เตอร์ที่ไม่ได้ตรวจสอบ (crrev.com/c/5706088, ข้อบกพร่อง: 329476354)
  • Spanified the Decode methods of WebSocketFrameParser to improve memory safety (crrev.com/c/5722108, Bug: 354307327).
  • ล้างส่วนที่เหลือของ absl::optional โดยนำส่วนหัว Abseil ที่ล้าสมัยออก และย้ายข้อมูลไปยัง std::optional (crrev.com/c/5691505, Bug: 40242125)
  • เปลี่ยน ChromeDriver ให้จัดการประเภทเป้าหมายที่ไม่รู้จักทั้งหมด (รวมถึง shared_storage_worklet) เป็น WebViewInfo::kOther แทนที่จะถือว่าเป็นข้อผิดพลาด ซึ่งจะช่วยให้ Chrome เปิดตัวประเภทเป้าหมายใหม่ได้โดยไม่ทำให้ WPT ใช้งานไม่ได้ในทันที (crrev.com/c/5680542, crrev.com/c/5679146, Bug: 42323839)
  • เพิ่มเป้าหมายโปรแกรมติดตั้งสำหรับlinux-builder-perfบิลด์เดอร์เพื่อสร้างไบนารีที่ลบสัญลักษณ์สำหรับที่เก็บถาวรของ Bisect และกำหนดค่าบิลด์เดอร์ Pinpoint เพื่อยอมรับadditional_compile_targetsที่แตกต่างกัน (crrev.com/c/5668198, ข้อบกพร่อง: 344643694)
  • อัปเดต run_performance_tests.py เพื่อค้นหาและส่งตำแหน่ง ChromeDriver ไปยัง crossbench ระหว่างการสร้างประสิทธิภาพ (crrev.com/c/5624538, ข้อบกพร่อง: 338629299)
  • อัปเดตcrossbenchการอ้างอิง (crrev.com/c/5681849)
  • ทำเครื่องหมาย FedCmSpecificTest.testClickErrorMoreDetails และ FedCmSpecificTest.testClickErrorGotIt ว่าไม่เสถียรใน Mac (crrev.com/c/5704320, crrev.com/c/5677564, Bug: 352821422, Bug: 346530330)
  • ปิดใช้การทดสอบ BidiTest.testFocusInFirstTab ที่ไม่เสถียร (crrev.com/c/5676686, Bug: 350916212)

ChromeDriver 127

การแก้ไขข้อบกพร่อง

  • ความเสถียร: แก้ไขข้อขัดข้องของ ChromeDriver ที่เกิดขึ้นเมื่อได้รับคำสั่ง target.detachFromTarget (หรือเหตุการณ์ target.detachedFromTarget) ขณะที่ไคลเอ็นต์เครื่องมือสำหรับนักพัฒนาเว็บกำลังประมวลผลคำสั่งอื่นๆ อยู่ ซึ่งป้องกันไม่ให้มีการเผยแพร่ออบเจ็กต์ WebView และ DevToolsClient ก่อนเวลาอันควร (crrev.com/c/5527584, ข้อบกพร่อง: 339773537)
  • ความเสถียร: แก้ไขปัญหาที่คำสั่ง Switch To Window อาจแสดงผลเป็น "ข้อผิดพลาดที่ไม่รู้จัก" อย่างไม่ถูกต้องหากมีการปลด WebView ออกระหว่างการดำเนินการคำสั่ง ตอนนี้ระบบจะเพิกเฉยต่อข้อผิดพลาดภายใน "ไม่พบ WebView" อย่างถูกต้อง ซึ่งจะทำให้เกิดการตอบกลับมาตรฐาน "ไม่มีหน้าต่างดังกล่าว" หากหน้าต่างเป้าหมายปิดไปแล้ว (crrev.com/c/5583730, ข้อบกพร่อง: 338616700)
  • ความเสถียร: มั่นใจได้ว่า ChromeDriver จะยอมรับการแยกเป้าหมายในขณะที่อัปเดตรายการ WebView ภายใน หากเป้าหมายยกเลิกการเชื่อมต่อระหว่างการอัปเดต ตอนนี้ ChromeDriver จะลองอีกครั้งแทนที่จะแสดงข้อผิดพลาดที่ไม่เป็นไปตามมาตรฐาน ซึ่งจะช่วยลดความไม่แน่นอนในสภาพแวดล้อมที่มีการสร้างและทำลายหน้าต่างอย่างรวดเร็ว (crrev.com/c/5565103, ข้อบกพร่อง: 338616700, ข้อบกพร่อง: 4771)
  • การนำทาง: เพิ่มตรรกะลงใน ChromeDriver เพื่อรอการนำทางที่ตรวจพบโดยปลายทางระยะไกลขณะค้นหาองค์ประกอบ ซึ่งจะช่วยป้องกันไม่ให้ ChromeDriver แสดงข้อผิดพลาดที่ไม่ได้มาตรฐานหรือหยุดทำงานโดยมี DCHECK เมื่อการนำทางเกิดขึ้นพร้อมกับการดำเนินการค้นหาองค์ประกอบ (crrev.com/c/5563113, การเปลี่ยนกลับ crrev.com/c/5563420, การเปลี่ยนเส้นทาง crrev.com/c/5562089, ข้อบกพร่อง: 4771)
  • BiDi: แก้ไขภาวะแข่งขันระหว่าง ChromeDriver กับ BiDiMapper ในระหว่างการสร้างเซสชัน ตอนนี้ ChromeDriver จะรอให้คำสั่ง browsingContext.getTree แสดงรายการที่ไม่ว่างเปล่าก่อนที่จะสรุปคำสั่ง NewSession เพื่อให้มั่นใจว่าแท็บเริ่มต้นที่สร้างขึ้นใหม่ได้รับการลงทะเบียนอย่างถูกต้อง (crrev.com/c/5575497, ข้อบกพร่อง: 341048786, ข้อบกพร่อง: 1503101)
  • BiDi: แก้ไขปัญหาที่โฟกัสยังคงอยู่ในแท็บพื้นหลังของ BiDiMapper หลังจากสร้างเซสชันแทนที่จะอยู่ในแท็บผู้ใช้ที่ใช้งานอยู่โดยการให้โฟกัสแก่แท็บผู้ใช้ครั้งแรกอย่างชัดเจน (crrev.com/c/5594070, ข้อบกพร่อง: 341048786, ข้อบกพร่อง: 1503101)
  • BiDi: หยุดไม่ให้ ChromeDriver พยายามแนบเป้าหมายเมื่อจัดการคำสั่ง BiDi (เช่น browsingContext.close) เพื่อป้องกันไม่ให้คำสั่ง CDP ค้างอย่างไม่มีกำหนดหากพรอมต์ของผู้ใช้เปิดอยู่ โดยมอบหมายการจัดการทั้งหมดให้กับเลเยอร์ BiDi ที่เชื่อมต่ออยู่แล้ว (crrev.com/c/5541915, การเปลี่ยนกลับ crrev.com/c/5539818, การกลับมาใช้ crrev.com/c/5522393, ข้อบกพร่อง: 4758)
  • FedCM: แก้ไขการทดสอบ WPT ที่ล้มเหลวซึ่งมีการทำเครื่องหมายว่าปิดกล่องโต้ตอบอย่างไม่ถูกต้องแล้ว ตอนนี้ระบบจะอัปเดตสถานะก็ต่อเมื่อการดำเนินการ selectAccount สำเร็จจริงเท่านั้น (crrev.com/c/5398379, ข้อบกพร่อง: 331237776)fedcm-loginhint.https.html
  • การทดสอบ: แก้ไขDCHECK ที่ล้มเหลวระหว่างการแยกวิเคราะห์ JSON เมื่ออักขระตรงกับขอบเขต kExtendedASCIIStart พอดี (crrev.com/c/5565276, ข้อบกพร่อง: 40284755)
  • การทดสอบ: แก้ไขการทดสอบ scrollend-event-fires-to-iframe-window.html WPT โดยใช้องค์ประกอบ iframe เป็นต้นทางการเลื่อนและป้อนการเคลื่อนที่ของเคอร์เซอร์แบบปัดเศษเป็นจำนวนเต็ม เพื่อป้องกันข้อผิดพลาดของ ChromeDriver ที่มีตำแหน่งสัมผัสแบบเศษส่วน (crrev.com/c/5570150, ข้อบกพร่อง: 340956654)
  • การทดสอบ: ปรับปรุงการวินิจฉัยในการทดสอบการผสานรวม ChromeDriver โดยการพิมพ์เส้นทางที่พยายามเมื่อ run_py_tests.py ค้นหาไบนารีของเบราว์เซอร์ไม่สำเร็จ (crrev.com/c/5604204, ข้อบกพร่อง: 4781)

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

  • BiDi: อัปเดตการอ้างอิง BiDi Mapper เพื่อให้เป็นไปตามการอัปเดตโปรโตคอลล่าสุดและการแก้ไขข้อบกพร่อง (crrev.com/c/5614670, crrev.com/c/5593796, crrev.com/c/5537892, crrev.com/c/5471839, ข้อบกพร่อง: 4226)
  • แทนที่การใช้งาน NOTREACHED() ด้วย NOTREACHED_IN_MIGRATION() ในไดเรกทอรี chrome/ เพื่อเตรียมพร้อมสำหรับการทำให้ NOTREACHED() เป็น [[noreturn]] อย่างเคร่งครัด (crrev.com/c/5539004, ข้อบกพร่อง: 40580068)
  • เปิดใช้การสร้าง THIRD_PARTY_NOTICES.txt สำหรับ ChromeDriver โดยใช้เครื่องมือ licenses.py เพื่อให้เป็นไปตามข้อกำหนดในการเผยแพร่ (crrev.com/c/5596355, ข้อบกพร่อง: 4777)
  • นำrun_wpt_tests.pyการรองรับ content_shell ออก เนื่องจากความครอบคลุมของ WPT ของ Chromium กำลังเปลี่ยนไปใช้ headless_shell + ChromeDriver อย่างเต็มรูปแบบ (crrev.com/c/5589930) จัดระเบียบสวิตช์ wptrunner ใหม่ให้เฉพาะเจาะจงกับโปรแกรมฝังเพื่อรองรับการเปลี่ยนแปลงนี้โดยไม่ส่งผลต่อการทำงาน (crrev.com/c/5589793, ข้อบกพร่อง: 338412391)
  • รวมตรรกะสำหรับการตรวจหาและการจัดการกล่องโต้ตอบ JavaScript โดยย้ายจาก JavaScriptDialogManager ไปยัง DevToolsClientImpl โดยตรง ซึ่งจะช่วยลดคลาสตัวจัดการแยกต่างหากเพื่อลดความซับซ้อนในการทดสอบและการให้เหตุผล (crrev.com/c/5545630, ข้อบกพร่อง: 4757)
  • ปิดใช้ PureBidiTest.testBrowsingContextTreeIsNotEmpty ใน Mac เนื่องจากไม่เสถียร (crrev.com/c/5588665, ข้อบกพร่อง: 343891977)
  • อัปเดตความคาดหวังของ WPT แบบ BiDi เพื่อให้สอดคล้องกับการอัปเดต Mapper ล่าสุด (crrev.com/c/5615110, ข้อบกพร่อง: 4226, ข้อบกพร่อง: 324436866)
  • เพิ่มการทดสอบหน่วยสำหรับ WebView::SendBidiCommand และ BidiTracker เพื่อเพิ่มการครอบคลุมของโค้ด (crrev.com/c/5588400, Bug: 341048786, Bug: 1503101)

ChromeDriver 126

ฟีเจอร์ใหม่

  • BiDi: อัปเดต ChromeDriver เพื่อจัดเตรียมสวิตช์ --disable-background-timer-throttling เมื่อเปิดเบราว์เซอร์สำหรับเซสชัน WebDriver BiDi เพื่อป้องกันไม่ให้มีการจำกัดแท็บในเบื้องหลัง (crrev.com/c/5515013, ข้อบกพร่อง: 4762)
  • BiDi: เพิ่มการรองรับ BiDi Mapper เพื่อส่งข้อความแก้ไขข้อบกพร่อง (sendDebugMessage) เมื่อต้องใช้การบันทึกแบบละเอียด ChromeDriver จะทําเครื่องหมายเหตุการณ์เหล่านี้เป็น bidi messages เพื่อแยกวิเคราะห์ แม้ว่าปัจจุบัน BidiTracker จะไม่สนใจเหตุการณ์ดังกล่าว (crrev.com/c/5465782, ข้อบกพร่อง: 4753)
  • คลาสสิก: ใช้การยอมรับกล่องโต้ตอบ (การแจ้งเตือน) ใดก็ได้โดยอัตโนมัติตามมาตรฐาน WebDriver ซึ่งกำหนดว่ากล่องโต้ตอบต้องไม่แสดงในเซสชันคลาสสิก (crrev.com/c/5517510, ข้อบกพร่อง: 4757)beforeunload

การแก้ไขข้อบกพร่อง

  • คลาสสิก: นำข้อจำกัดการพยายามสูงสุดที่ซ้ำซ้อนในตรรกะการดึงข้อมูลองค์ประกอบออก ตอนนี้การดึงข้อมูลจะจำกัดเฉพาะการหมดเวลาโดยนัย ซึ่งป้องกันสถานการณ์ที่การดำเนินการอาจล้มเหลวเร็วกว่าที่ควรและแสดงข้อผิดพลาด NoSuchExecutionContext ที่ไม่ได้มาตรฐานอย่างไม่ถูกต้อง (crrev.com/c/5478668, ข้อบกพร่อง: 4379)
  • คลาสสิก: แก้ไขการเกิดปัญหาซ้ำที่ทำให้ ChromeDriver ตอบกลับด้วย javascript error แทนที่จะเป็นข้อผิดพลาด invalid selector เมื่อคำขอเรียกใช้ใช้กลยุทธ์ตำแหน่งที่ไม่ถูกต้อง (crrev.com/c/5490662, ข้อบกพร่อง: 4743)
  • คลาสสิก: ตรวจสอบว่าคำสั่งหน้าต่างใน Android (ขยาย ย่อ เต็มหน้าจอ) แสดงข้อผิดพลาด unsupported operation ที่เป็นไปตามมาตรฐานแทนที่จะดำเนินการต่อ เนื่องจากเบราว์เซอร์ Android ไม่รองรับการดำเนินการเหล่านี้ (crrev.com/c/5490224, ข้อบกพร่อง: 4689)
  • คลาสสิก: แก้ไข ChromeDriver เพื่อไม่ให้แสดงรหัสข้อผิดพลาดภายใน kChromeNotReachable อีกต่อไป โดยตอนนี้จะแสดงข้อผิดพลาดมาตรฐาน kSessionNotCreated อย่างถูกต้องเมื่อไคลเอ็นต์ HTTP เชื่อมต่อกับเบราว์เซอร์ไม่ได้ (crrev.com/c/5476390, ข้อบกพร่อง: 4379)
  • คลาสสิก: แก้ไข ChromeDriver ไม่ให้แสดงข้อผิดพลาด kNoSuchExecutionContext ที่ไม่ใช่มาตรฐานเมื่อเรียกใช้คำสั่งหน้าต่าง (crrev.com/c/5483606, ข้อบกพร่อง: 4379)
  • คลาสสิก: นำรหัสข้อผิดพลาด kForbidden ที่ไม่ได้ใช้และไม่รองรับออกจากรายการรหัสข้อผิดพลาดที่รองรับ (crrev.com/c/5476927, ข้อบกพร่อง: 4379)
  • BiDi: อัปเดต ChromeDriver เพื่อแจ้งให้ผู้ใช้ทราบก่อนปิดแท็บ Mapper เฉพาะ ซึ่งสอดคล้องกับการเปลี่ยนแปลงต้นทาง chromium-bidi (crrev.com/c/5508600, ข้อบกพร่อง: 4761)

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

  • BiDi: อัปเดตทรัพยากร Dependency ของ BiDi Mapper เพื่อนำฟีเจอร์ล่าสุดและการแก้ไขข้อบกพร่องจากโปรเจ็กต์ต้นทาง chromium-bidi (crrev.com/c/5490428, crrev.com/c/5471839, crrev.com/c/5509316, crrev.com/c/5458234, ข้อบกพร่อง: 4226) (หมายเหตุ: การเพิ่มเวอร์ชันของโปรแกรมสร้างแผนที่ถูกเปลี่ยนกลับโดยผู้ดูแลระบบชั่วคราว แล้วจึงกลับมาใช้ใหม่ (crrev.com/c/5374839, crrev.com/c/5374366))
  • แทนที่การใช้งาน base::StringPiece ด้วย std::string_view ใน //chrome (crrev.com/c/5467746, Bug: 40506050)
  • นำการใช้งาน std::to_string() ใน //chrome ออก แล้วแทนที่ด้วย base::NumberToString() หรือ base::FormatNumber() (crrev.com/c/5505593, ข้อบกพร่อง: 335672557)
  • เลิกการรองรับสวิตช์ --remote-debugging-address ในโหมด Headless เวอร์ชันเก่า เนื่องจากถือว่าการเข้าถึงระยะไกลที่ไม่ได้รับการป้องกันไปยังโปรโตคอลเครื่องมือสำหรับนักพัฒนาเว็บใน Chrome เป็นอันตรายเกินไป (crrev.com/c/5512634, ข้อบกพร่อง: 327558594)
  • นำกฎการสร้าง Fuchsia ออกจาก //chrome ยกเว้น ChromeDriver (crrev.com/c/5473870, ข้อบกพร่อง: 41481724)
  • ย้ายข้อมูลการอ้างอิง TODO(crbug.com/...) รุ่นเดิมทั่วทั้งฐานของโค้ดไปยังรูปแบบรหัส Issue Tracker ใหม่ (TODO(b/...)) (crrev.com/c/5492605, crrev.com/c/5486477, crrev.com/c/5461380, ข้อบกพร่อง: 321899722)
  • ปิดใช้การทดสอบ WebAuthn (เครื่องมือตรวจสอบสิทธิ์) ใน Mac (ทั้งแบบไม่มีส่วนหัวและ chromedriver_py_tests) เนื่องจากข้อบกพร่องที่ซับซ้อนซึ่งอยู่เบื้องหลัง ทำให้สามารถอัปเกรดบ็อตเป็น macOS 14 ได้ (crrev.com/c/5525435, crrev.com/c/5518820, ข้อบกพร่อง: 329130177)
  • ปิดใช้บิลด์เดอร์ WPT สำหรับ content_shell เนื่องจากพบปัญหาในการเรียกใช้ WPT ร่วมกับ ChromeDriver และ Content Shell (crrev.com/c/5512439, Bug: 40214293)
  • ส่งการเปลี่ยนแปลงที่อัปเดต focus-navigation WPT ให้ใช้ Shift+Tab ผ่าน test_driver.action_sequence() สำหรับการนำทางย้อนกลับอีกครั้ง แก้ไขข้อบกพร่องใน focus-utils.js ซึ่งใช้รหัสแป้นที่ไม่ถูกต้อง (E050 แทน E008) สำหรับแป้น Shift (crrev.com/c/5467843, reverting crrev.com/c/5466531, relanding crrev.com/c/5463903, Bug: 40597271)
  • เพิ่ม crossbench และ chromedriver ลงในเป้าหมายการสร้างประสิทธิภาพ (crrev.com/c/5521874, ข้อบกพร่อง: 338627700)

ChromeDriver 125

ฟีเจอร์ใหม่

  • ท่าทางของอุปกรณ์: เพิ่มคำสั่ง ChromeDriver สำหรับการจัดการท่าทางของอุปกรณ์ ซึ่งรองรับส่วนการทำงานอัตโนมัติของข้อกำหนดท่าทางของอุปกรณ์ ซึ่งจะช่วยให้คุณลบล้างท่าทางของอุปกรณ์ที่ฮาร์ดแวร์ตั้งค่าไว้และนำการลบล้างออกผ่านคำสั่งส่วนขยาย (crrev.com/c/5437993, ข้อบกพร่อง: 330376761)

การแก้ไขข้อบกพร่อง

  • BiDi: เปลี่ยนที่เก็บข้อมูลชั่วคราวของคำสั่ง BiDi ขาเข้า id จาก Double เป็น base::Value ซึ่งจะช่วยให้ระบบแสดง id ในการตอบกลับได้อย่างแม่นยำโดยไม่มีจุดทศนิยมต่อท้ายหรือส่วนเศษที่ไม่คาดคิดหลังจากทำการซีเรียลไลซ์ JSON (crrev.com/c/5444225, ข้อบกพร่อง: 4676)
  • FedCM: กลับมาใช้การเปลี่ยนแปลงเพื่อเปิดใช้ CORS ในปลายทางคำยืนยันรหัสหลังจากที่ IdP พร้อมแล้ว (crrev.com/c/5440132, การเปลี่ยนกลับ crrev.com/c/5381316, การกลับมาใช้ crrev.com/c/5370086, ข้อบกพร่อง: 40284123)
  • FedCM: แก้ไขข้อบกพร่องที่ทำให้ระบบทำเครื่องหมายกล่องโต้ตอบว่าปิดแล้วอย่างไม่ถูกต้อง โดยตรวจสอบว่าระบบจะทำเครื่องหมายว่าปิดแล้วก็ต่อเมื่อคำสั่ง selectAccount ทำงานสำเร็จเท่านั้น ซึ่งจะช่วยแก้ปัญหาการทดสอบไม่สำเร็จเมื่อมีการเรียกใช้ selectAccount โดยไม่มีตัวเลือกบัญชีที่คาดไว้ (crrev.com/c/5398379, ข้อบกพร่อง: 331237776) หลีกเลี่ยงการเรียกใช้ fedcm_get_and_select_first_account เมื่อไม่คาดว่าจะมีการเลือกบัญชีเพื่อป้องกันไม่ให้เกิดข้อบกพร่องนี้ (crrev.com/c/5398800)
  • การทดสอบ: แก้ไขข้อผิดพลาดในการทดสอบ popover-light-dismiss.html WPT โดยการรวมลําดับการกระทําและใช้เอกสารของเฟรมหลักเป็นต้นทางสําหรับการกระทํา pointerUp เพื่อป้องกันไม่ให้ ChromeDriver ส่งเหตุการณ์ pointerUp พร้อมกันในเฟรมต่างๆ อย่างไม่ถูกต้อง (crrev.com/c/5402096, ข้อบกพร่อง: 325981758)
  • การทดสอบ: แก้ไข wptrunner เพื่อส่งต่อเอาต์พุต stderr อย่างถูกต้อง (รวมถึงบันทึกของเบราว์เซอร์ที่เขียนเมื่อใช้ --enable-chrome-logs) ไปยังอาร์ติแฟกต์ stderr แทน crash_log และย้ายข้อผิดพลาดของ Harness (ซึ่งมีสแต็กเทรซของเบราว์เซอร์) ไปยัง crash_log (crrev.com/c/5437023, ข้อบกพร่อง: 41494889)
  • การทดสอบ: แก้ไข wptrunner เพื่อกำหนดเส้นทางบันทึกของเบราว์เซอร์ไปยังอาร์ติแฟกต์การทดสอบที่ถูกต้องโดยจัดกลุ่มเอาต์พุตตามกระบวนการ ChromeDriver ซึ่งจะป้องกันไม่ให้บันทึกสลับกันและบันทึกที่ไม่มีการเชื่อมโยงระหว่างการดำเนินการทดสอบแบบขนาน (crrev.com/c/5320681, ข้อบกพร่อง: 41494889)

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

  • BiDi: อัปเดตทรัพยากร Dependency ของ BiDi Mapper โดยผสานรวมการเพิ่มประสิทธิภาพโปรโตคอลและการแก้ไขข้อบกพร่องล่าสุด (crrev.com/c/5433300, crrev.com/c/5393442, ข้อบกพร่อง: 4226) (หมายเหตุ: การอัปเดตก่อนหน้า crrev.com/c/5374366 ถูกเปลี่ยนกลับ crrev.com/c/5374839 และต่อมาได้มีการอัปเดตอีกครั้งโดยปิดใช้การทดสอบที่ไม่เสถียรและอัปเดตใบอนุญาต crrev.com/c/5374914)
  • การวินิจฉัย: ส่ง StackTrace ของ Chrome ไปยังข้อยกเว้นของ ChromeDriver ซึ่งจะแสดงสแต็กเทรซของเบราว์เซอร์ในข้อความแสดงข้อผิดพลาดเมื่อระบบลบเซสชันเนื่องจากหน้าเว็บ/แท็บขัดข้อง (เช่น พอยน์เตอร์ที่ค้างอยู่บน Mac) ซึ่งช่วยปรับปรุงความสามารถในการแก้ไขข้อบกพร่องได้อย่างมาก (crrev.com/c/5374371, ข้อบกพร่อง: 330009945)
  • การทดสอบ: ปิดใช้การทดสอบการผสานรวม testTakeLargeElementViewportScreenshot ที่ไม่เสถียรชั่วคราวใน Mac (โดยเฉพาะ mac-arm64) (crrev.com/c/5447515, ข้อบกพร่อง: 333826980)
  • การทดสอบ: อัปเดตอาร์กิวเมนต์การเปิดตัว ChromeDriver ในสภาพแวดล้อมการทดสอบ (CEL) ให้ตรงกับไวยากรณ์ Selenium 4 ขึ้นไป (crrev.com/c/5448812, ข้อบกพร่อง: 308885357)
  • การทดสอบ: ดึงบรรทัดคำสั่ง chrome ที่แน่นอนซึ่งใช้ในการเรียกใช้การทดสอบ WPT แต่ละรายการจากบันทึก chromedriver ลงในอาร์ติแฟกต์ ResultDB ที่ชื่อ command ซึ่งจะช่วยให้การแก้ไขข้อบกพร่องด้วยตนเองง่ายขึ้นด้วย run_blink_wptserve.py (crrev.com/c/5441189, Bug: 41494889)
  • ทรัพยากร Dependency: นำ Closure ออกจากรายการทรัพยากร Dependency ของ selenium-atoms ซึ่งส่งผลให้นำออกจากประกาศของบุคคลที่สามของ ChromeDriver (crrev.com/c/5424804, ข้อบกพร่อง: 4226)
  • ทรัพยากร Dependency: นำทรัพยากร Dependency ที่ไม่ได้ใช้ใน dynamic_annotations ออกจากที่เก็บฐาน (crrev.com/c/3398908, ข้อบกพร่อง: 1282422)
  • การจัดรูปแบบ: ใช้การกำหนดค่า clang-format ใหม่กับส่วนหัวของ Windows ที่มีปัญหา (crrev.com/c/5367127, ข้อบกพร่อง: 329138753)

ChromeDriver 124

ฟีเจอร์ใหม่

  • BiDi: เพิ่มขั้นตอนการบิลด์เพื่อลดขนาดสคริปต์ BiDiMapper ก่อนฝังสคริปต์ลงใน ChromeDriver เนื่องจากตอนนี้ระบบจะดาวน์โหลด Source Mapper จาก CIPD โดยไม่ลดขนาด (crrev.com/c/5310075, ข้อบกพร่อง: 4226)
  • WebAuthn: เพิ่มคำสั่ง SetCredentialProperties ซึ่งช่วยให้ไคลเอ็นต์อัปเดตค่าสถานะการสำรองข้อมูลสำหรับข้อมูลเข้าสู่ระบบ WebAuthn ได้ (crrev.com/c/5296389, ข้อบกพร่อง: 40945430)
  • WebAuthn: เปิดเผยแฟล็กการสำรองข้อมูล WebAuthn ผ่าน WebDriver โดยการเพิ่ม defaultBackupEligibility และ defaultBackupState ลงในคำสั่ง "เพิ่มเครื่องมือตรวจสอบสิทธิ์เสมือน" และ backupEligibility และ backupState ลงในคำสั่ง "เพิ่มข้อมูลเข้าสู่ระบบ" (crrev.com/c/5297117, ข้อบกพร่อง: 40945430)
  • การทดสอบ: เพิ่มการรองรับอาร์กิวเมนต์บรรทัดคำสั่ง --failfast ในการทดสอบการผสานรวม ChromeDriver Python ซึ่งจะหยุดการทดสอบเมื่อเกิดข้อผิดพลาดแรกเพื่อช่วยในการแก้ไขข้อบกพร่อง (crrev.com/c/5374546)
  • การทดสอบ: เพิ่มการรองรับ content-shell สำหรับคำสั่ง webdriver ของ SetRPHRegistrationMode ผ่าน testdriver-vendor.js API (crrev.com/c/5205730, ข้อบกพร่อง: 1359103)

การแก้ไขข้อบกพร่อง

  • ความเสถียร: ย้ายการตรวจสอบการหมดอายุของระยะหมดเวลาไปไว้ในส่วนเนื้อหาของลูปการสำรวจและรอใน ChromeImpl::SetWindowBounds การเปลี่ยนแปลงนี้แก้ไขปัญหาที่เมื่อมีการโหลดสูง การหมดเวลาอาจเกิดขึ้นก่อนการวนซ้ำครั้งแรก (crrev.com/c/5366899, Bug: 4642)
  • ประสิทธิภาพ: ลดเวลาในการรอใน ChromeImpl::SetWindowBounds โดยใช้การรอแบบ Exponential Backoff เฉพาะในกรณีที่ขอบเขตของหน้าต่างยังไม่ถึงสถานะที่ต้องการ ซึ่งจะช่วยลดเวลาในการตั้งค่า WPT (crrev.com/c/5366457, ข้อบกพร่อง: 4642)
  • การเริ่มต้น: อัปเดต ChromeDriver ให้ใช้ --user-data-dir แทน --data-path เมื่อระบุไดเรกทอรีข้อมูลสำหรับ content_shell เพื่อให้สอดคล้องกับวิธีอ่านพอร์ต DevTools ที่ใช้งานอยู่ (crrev.com/c/5226609, ข้อบกพร่อง: 1295373)

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

  • BiDi: อัปเดตการขึ้นต่อกันของ BiDi Mapper เพื่อให้มีฟีเจอร์และการแก้ไขโปรโตคอลล่าสุด (crrev.com/c/5374366, crrev.com/c/5349491, crrev.com/c/5317650, Bug: 4226) (หมายเหตุ: การเพิ่มเวอร์ชันถูกเปลี่ยนกลับชั่วคราวแล้วจึงกลับมาอีกครั้งเนื่องจากการทดสอบล้มเหลว crrev.com/c/5374839, crrev.com/c/5368680, crrev.com/c/5319423)
  • แทนที่การใช้งาน absl::optional ด้วย std::optional ในฐานของโค้ดหลังจากเปลี่ยน absl::optional เป็นนามแฝงประเภท (crrev.com/c/5296147, ข้อบกพร่อง: 1500249)
  • ขยายความครอบคลุมของ MiraclePtr (raw_ptr) ไปยังคอนเทนเนอร์มาตรฐานเพิ่มเติม ซึ่งรวมถึง std::list, std::unordered_set, base::flat_set, std::stack และ std::queue (crrev.com/c/5306923, ข้อบกพร่อง: 325302189)
  • เปลี่ยนไปใช้ base::numericsไบต์ Conversion หรือ BigEndianWriter (ซึ่งตอนนี้ยอมรับ base::span แล้ว) เพื่อปรับปรุงความปลอดภัยเมื่อเขียนไบต์แบบบิ๊กเอนเดียน (crrev.com/c/5202348, ข้อบกพร่อง: 1490484)WriteBigEndian()
  • เปลี่ยนไปใช้ ChromeDriver เพื่อเรียกใช้การทดสอบแพลตฟอร์มเว็บ (WPT) ด้วย content_shell (ไม่รวมการทดสอบเสมือนและการแก้ไขข้อบกพร่องที่รอการแก้ไขข้อบกพร่องต้นทาง) (crrev.com/c/5347371, ข้อบกพร่อง: 40214293)
  • แปลงการทดสอบเว็บ Generic Sensor ที่มีอยู่ทั้งหมดให้ใช้ test_driver.js และเซ็นเซอร์เสมือนแทนการจำลอง JS/Mojo เพื่อให้สอดคล้องกับส่วนการทำงานอัตโนมัติใหม่ของข้อกำหนด Generic Sensor (crrev.com/c/4770867, ข้อบกพร่อง: 1278377, ข้อบกพร่อง: 1471996)
  • ปรับปรุงการสร้างใบอนุญาตโดยเพิ่ม append_notices.py เพื่อสร้างเครดิตสำหรับทรัพยากร Dependency ของ BiDiMapper และอัปเดตการเรียกใช้ licenses.py ให้ขึ้นอยู่กับ README ของ selenium-atoms อย่างเคร่งครัดสำหรับประกาศของบุคคลที่สาม (crrev.com/c/5350601, crrev.com/c/5339957, ข้อบกพร่อง: 4729, ข้อบกพร่อง: 4735)

ChromeDriver 123

ฟีเจอร์ใหม่

  • FedCM: แสดงกล่องโต้ตอบโมดัลสำหรับโฟลว์ปุ่มบัญชีเดียว รวมถึงเพิ่มการรองรับมุมมองโมดัลในอินเทอร์เฟซการทำงานอัตโนมัติ (crrev.com/c/5231438, ข้อบกพร่อง: 1518356)
  • FedCM: เพิ่มการรองรับ ChromeDriver สำหรับการเปิดลิงก์ภายในกล่องโต้ตอบ FedCM โดยถือว่าลิงก์เป็นปุ่มเพื่อให้การทำงานอัตโนมัติง่ายขึ้น (crrev.com/c/5225543, ข้อบกพร่อง: 1513520)
  • เซ็นเซอร์: แก้ไขคำสั่งเซ็นเซอร์เสมือนของ WebDriver เพื่ออ่านมุมออยเลอร์ (อัลฟ่า-เบต้า-แกมมา) แทนควอเทอร์เนียน เพื่อให้เป็นไปตามการอัปเดตข้อมูลจำเพาะของเซ็นเซอร์ตรวจจับการวางแนวล่าสุด เลเยอร์ CDP และบริการภายในยังคงใช้ควอเทอร์เนียนผ่านขั้นตอนการแปลง (crrev.com/c/5229177, ข้อบกพร่อง: 1506995, ข้อบกพร่อง: 1520912, ข้อบกพร่อง: 1520919)

การแก้ไขข้อบกพร่อง

  • คลาสสิก: แก้ไขปัญหาที่การส่งคืนโหนดจากเฟรมอื่นผ่านสคริปต์ทําให้เกิดข้อผิดพลาด StaleElementReference อย่างไม่ถูกต้อง ตอนนี้ระบบจะส่งคืน JavaScriptError อย่างถูกต้องเพื่อให้เป็นไปตามมาตรฐาน WebDriver (crrev.com/c/5222746, ข้อบกพร่อง: 4668)
  • การทดสอบ: แก้ไขการทดสอบเหตุการณ์การเลื่อนเกินขอบเขตที่ล้มเหลวใน Chrome/ChromeDriver เนื่องจากมีการลากด้วยการสัมผัสที่ขยายออกนอกขอบเขตหน้าต่าง ตอนนี้การลากถูกจำกัดอย่างถูกต้องแล้ว (crrev.com/c/5297676, ข้อบกพร่อง: 40832230)
  • การทดสอบ: แก้ไขopen-close.https.htmlการทดสอบ MIDI เพื่อไม่ให้สร้าง Promise โดยไม่จำเป็น ซึ่งจะหลีกเลี่ยงการปฏิเสธ Promise ที่ไม่ได้จัดการซึ่งทำให้ ChromeDriver ทดสอบไม่สำเร็จ (crrev.com/c/5239869, ข้อบกพร่อง: 1499775)
  • การทดสอบ: แก้ไขกลุ่มสิทธิ์ในการทดสอบ wpt_internal/system-wake-lock/idlharness* ที่ test_driver.set_permission(...) ส่งผ่าน false อย่างไม่ถูกต้องแทนที่จะเป็น null หรือ WindowProxy ซึ่งทำให้ ChromeDriver สับสน (crrev.com/c/5271087, ข้อบกพร่อง: 40287920)

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

  • BiDi: อัปเดตทรัพยากร Dependency ของ BiDi Mapper เพื่อดึงข้อมูลการแก้ไขและฟีเจอร์ล่าสุด (crrev.com/c/5205452, crrev.com/c/5255321, crrev.com/c/5238148, crrev.com/c/5237125, ข้อบกพร่อง: 4226) (หมายเหตุ: เราได้เปลี่ยนกลับการเพิ่มเวอร์ชันชั่วคราวแล้วจึงเพิ่มเวอร์ชันอีกครั้งเนื่องจากบิลด์ล้มเหลว crrev.com/c/5238855)
  • ปรับปรุงความสมบูรณ์ของโค้ด ChromeDriver โดยการนำการแคสต์แบบคงที่ที่ไม่ปลอดภัยออกจากคลาสพื้นฐานไปยังคลาสที่ได้มาในทั้ง ChromeImpl และ DevToolsClientImpl เพื่อป้องกันลักษณะการทำงานที่อาจไม่แน่นอน (crrev.com/c/5277062, crrev.com/c/5272562, ข้อบกพร่อง: 4702)
  • นำการแคสต์ที่ไม่ปลอดภัยออกใน WebViewImpl (crrev.com/c/5272230, ข้อบกพร่อง: 4702)
  • นำรูปแบบที่เลิกใช้งานแล้วของ base::Base64Encode() ออกแล้ว และย้ายข้อมูลไปยัง std::string รูปแบบใหม่กว่าที่ส่งคืนตัวแปรแทนการใช้พารามิเตอร์ขาออก (crrev.com/c/5179900, crrev.com/c/5246585, ข้อบกพร่อง: 1486214)
  • อัปเดตคำสั่ง #include ทั้งหมดสำหรับ base/... เพื่อใช้ "" แทน <> เพื่อความสอดคล้องกัน (crrev.com/c/5237376, ข้อบกพร่อง: 1500249)
  • ย้ายไฟล์ DIR_METADATA ทั้งหมดใน chrome/test/ ไปยัง Buganizer (crrev.com/c/5284119, Bug: 1518875)
  • ป้องกันไม่ให้ wptrunner สร้างไฟล์ - ในเครื่องเมื่อส่งผ่าน -vvv โดยนำสวิตช์ chromedriver --log-path=- ที่ไม่จำเป็นออก เนื่องจากระบบได้เปลี่ยนเส้นทาง stderr ไปยัง stdout แล้ว (crrev.com/c/5282721)
  • ปรับปรุง wptrunner เพื่อสรุปผลการทดสอบเมื่อเกิดการถดถอย โดยรวมผลการทดสอบย่อยและสแต็กเทรซของ ChromeDriver ไว้ในเอาต์พุตสรุปโดยตรง (crrev.com/c/5238662, ข้อบกพร่อง: 1521922)
  • การแก้ไขข้อบกพร่องของการทดสอบการผสานรวม ChromeDriver ที่ง่ายขึ้นโดยการเพิ่มพารามิเตอร์ --remote-chromedriver-port ไปยัง run_py_tests.py ซึ่งช่วยให้เชื่อมต่อกับอินสแตนซ์ที่มีอยู่ซึ่งทำงานภายใต้โปรแกรมแก้ไขข้อบกพร่องได้ (crrev.com/c/5237254, ข้อบกพร่อง: 4693)
  • หลีกเลี่ยงการเรียกใช้ base::HexEncode() และ RandBytes() แบบ 2 อาร์กิวเมนต์เพื่อให้คอมไพเลอร์อนุมานขนาดที่ถูกต้อง ซึ่งจะช่วยลดความซับซ้อนของโค้ด (crrev.com/c/5241357)

ChromeDriver 122

การแก้ไขข้อบกพร่อง

  • BiDi: อัปเดตการซีเรียลไลซ์โหนดแบบลึกให้รวม loaderId เพื่อให้ ChromeDriver และ BiDi Mapper อ้างอิงและยกเลิกการอ้างอิงโหนดได้อย่างถูกต้องโดยไม่ต้องมีการรับส่งมากเกินไป (crrev.com/c/5116240, ข้อบกพร่อง: 1420968)
  • ความสามารถ: อัปเดต ChromeDriver เพื่อส่งความสามารถ acceptInsecureCerts ไปยัง BiDi Mapper ทันทีที่เริ่มต้น ซึ่งจะป้องกันไม่ให้เกิดสภาวะแข่งขันที่อาจใช้ความสามารถช้าเกินไป (crrev.com/c/5125711, ข้อบกพร่อง: 4643)
  • คลาสสิก: ปรับโครงสร้างการสร้างการอ้างอิงองค์ประกอบใหม่เพื่อใช้รูปแบบ <frame_id>.<loader_id>.<backend_node_id> ซึ่งจะช่วยให้ ChromeDriver แยกความแตกต่างระหว่างการอ้างอิงองค์ประกอบที่ถูกต้อง ไม่รู้จัก และล้าสมัยในการไปยังส่วนต่างๆ ของเฟรมและการอัปเดต DOM ได้อย่างชัดเจน (crrev.com/c/5094519, ข้อบกพร่อง: 4379)
  • คลาสสิก: แก้ไขปัญหาที่คำสั่ง window/handles อาจทำงานไม่สำเร็จและแสดงข้อผิดพลาด "ไม่มีหน้าต่างดังกล่าว" หากเป้าหมายที่สร้างขึ้นใหม่ปิดตัวเอง (เช่น ในภาวะแข่งขัน) ก่อนที่ ChromeDriver จะแนบกับเป้าหมายนั้นได้ (crrev.com/c/5147409, ข้อบกพร่อง: 1506833)
  • FedCM: เพิ่ม Listener เหตุการณ์ภายในเพื่อแจ้งเตือนเมื่อปิดกล่องโต้ตอบ FedCM เพื่อป้องกันไม่ให้คำสั่ง dialogtype แสดงข้อมูลที่ไม่มีอัปเดตหากปิดกล่องโต้ตอบภายนอก (เช่น ผ่าน AbortController.abort) (crrev.com/c/5067504, ข้อบกพร่อง: 1506292)
  • FedCM: นำคำนำหน้าของผู้ให้บริการออกจากคำสั่ง ClickDialogButton เนื่องจากได้รับการอนุมัติในข้อกำหนด FedCM แล้ว (crrev.com/c/5092527, ข้อบกพร่อง: 1499341)

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

  • BiDi: อัปเดตการอ้างอิง BiDi Mapper เป็นเวอร์ชันล่าสุด (crrev.com/c/5205452, ข้อบกพร่อง: 4226)
  • ลดการรับส่งข้อมูล ChromeDriver และโปรโตคอลเครื่องมือสำหรับนักพัฒนาเว็บใน Chrome (CDP) โดยนำการเรียก Page.enable ที่ซ้ำกันซึ่งส่งจากทุก DevToolsEventListener ออก เนื่องจาก DevToolsClientImpl จัดการเรื่องนี้ต่อเป้าหมายอยู่แล้ว (crrev.com/c/5088789, ข้อบกพร่อง: 4600)
  • เปลี่ยนบิลด์เดอร์ Wptrunner ทั้งหมดสำหรับ content_shell เป็นสถานะทดลอง เนื่องจากขณะนี้ระบบยังไม่รองรับการเรียกใช้การทดสอบในโหมดโปรโตคอลอย่างเต็มที่ในขณะที่การผสานรวม ChromeDriver อยู่ระหว่างดำเนินการ (crrev.com/c/5225148, ข้อบกพร่อง: 1474702)
  • ข้ามการทดสอบที่ต้องใช้ window.test_driver_internal.get_computed_role ใน content_shell เนื่องจากยังไม่ได้ใช้งาน ซึ่งจะป้องกันไม่ให้ TypeError ล้มเหลว (crrev.com/c/5189678, ข้อบกพร่อง: 1517744)
  • กลับมาใช้การรีแฟคเตอร์เพื่อใช้ฟีเจอร์แฟล็ก IS_OZONE_{X11, WAYLAND} ที่ไม่ขึ้นอยู่กับแพลตฟอร์มแทน OZONE_PLATFORM_* (crrev.com/c/5086329, ข้อบกพร่อง: 1500494)
  • อัปเดตการอ้างอิง selenium-atoms เป็นการแก้ไขล่าสุด (crrev.com/c/5110808, ข้อบกพร่อง: 4662)
  • แก้ไขตรรกะในการทดสอบ SnapEvents เมื่อเรียกใช้กับไบนารี Chrome แบบเต็มโดยการปัดเศษอินพุตการย้ายเคอร์เซอร์ บังคับใช้พารามิเตอร์ origin สำหรับการเลื่อน และใช้การยืนยันค่าประมาณ (assert_approx_equals) เพื่อจัดการความคลาดเคลื่อนของการเลื่อน/ออฟเซ็ตเศษส่วน (crrev.com/c/5097343)
  • เพิ่ม StringPrintfNonConstexpr() helper เพื่อแยกความแตกต่างจาก StringPrintf() เมื่อสตริงรูปแบบไม่ใช่ค่าคงที่ในเวลาคอมไพล์ (crrev.com/c/4950568, Bug: 1371963)
  • ตรวจสอบว่าการหลีกมาโคร Rust ของ chromium::import! ใช้ฟังก์ชันแบบฉีดเพื่อป้องกันการชนกันในชื่อเป้าหมาย GN ที่สร้างขึ้น (crrev.com/c/5132119, ข้อบกพร่อง: 1512174)
  • ScopedTempDirWithRetry การติดตั้งใช้งานโดยการเพิ่มตัวสร้างและการคืนค่าก่อนเวลาในตัวทำลาย (crrev.com/c/5113843)

ChromeDriver 121

ฟีเจอร์ใหม่

  • การทดสอบ: เพิ่มการรองรับการเรียกใช้การทดสอบที่ผสานรวม ChromeDriver (chromedriver_py_test) กับ chrome-headless-shell นอกเหนือจากเบราว์เซอร์ Chrome มาตรฐานในบ็อตสร้าง ซึ่งรวมถึงความสามารถในการค้นหาไบนารีของเบราว์เซอร์ตามพารามิเตอร์ --browser-name และเรียกใช้ชุดการทดสอบที่เฉพาะเจาะจงแบบมีเงื่อนไข (crrev.com/c/4995189, crrev.com/c/4989442, Bug: 4358)

การแก้ไขข้อบกพร่อง

  • ความเสถียร: เริ่มต้น KeyboardLayoutEngine เริ่มต้นเป็น StubKeyboardLayoutEngine เพื่อป้องกันไม่ให้ ChromeDriver ขัดข้องเนื่องจาก DCHECK ใน KeyboardLayoutEngineManager::SetKeyboardLayoutEngine (crrev.com/c/5017859, ข้อบกพร่อง: 4625)
  • ความเสถียร: แก้ไขปัญหาความไม่เสถียรที่ ChromeDriver อาจขัดข้องหากเทรดเซสชันขอปิดการเชื่อมต่อหลังจากที่ไคลเอ็นต์ขอปิดการเชื่อมต่อเดียวกันแล้ว (crrev.com/c/4994636, ข้อบกพร่อง: 4606)
  • การจัดการทรัพยากร: แก้ไขการรั่วไหลของทรัพยากรในการทดสอบการผสานรวม ChromeDriver (RemoteBrowserTest) โดยตรวจสอบว่ากระบวนการของเบราว์เซอร์สิ้นสุดลง แม้ว่าคำสั่ง ChromeDriver จะส่งข้อยกเว้น (crrev.com/c/5009554, ข้อบกพร่อง: 4614)
  • การจัดการทรัพยากร: ใช้ตรรกะในการทดสอบการผสานรวม ChromeDriver เพื่อตรวจหาและสิ้นสุดกระบวนการของเบราว์เซอร์ที่กระบวนการ ChromeDriver ละทิ้ง (crrev.com/c/5014093, ข้อบกพร่อง: 4617)
  • การเริ่มต้น: แก้ไขปัญหาที่ chrome-headless-shell จะแสดงรายการเป้าหมายที่ว่างเปล่า ซึ่งทำให้สร้างเซสชันไม่ได้ โดยการต่ออาร์กิวเมนต์ data:, เข้ากับบรรทัดคำสั่งของเบราว์เซอร์เมื่อชื่อเบราว์เซอร์คือ chrome-headless-shell (crrev.com/c/5010392, crrev.com/c/5009535, ข้อบกพร่อง: 4615, ข้อบกพร่อง: 4358)
  • FedCM: เพิ่มเหตุการณ์ใหม่เพื่อแจ้งเตือนเมื่อปิดกล่องโต้ตอบ FedCM เพื่อให้มั่นใจว่า dialogtype และคำสั่งอื่นๆ จะไม่แสดงข้อมูลที่ล้าสมัยหากปิดกล่องโต้ตอบจากภายนอก (เช่น ผ่าน AbortController.abort) (crrev.com/c/5067504, ข้อบกพร่อง: 1506292)
  • การทดสอบ: แก้ไขและเปิดใช้การทดสอบการผสานรวม ChromeDriver ทั้งหมดอีกครั้ง ซึ่งก่อนหน้านี้ปิดใช้สำหรับ chrome-headless-shell ใน Windows (crrev.com/c/5027594, ข้อบกพร่อง: 4358)
  • การทดสอบ: ลดความเข้มงวดของการยืนยันที่เข้มงวดเกินไปใน testElementRegionTest เพื่อให้สอดคล้องกับมาตรฐาน WebDriver ซึ่งจะช่วยแก้ปัญหาความไม่เสถียรที่เกิดจากลักษณะเฉพาะของการแสดงผลของเบราว์เซอร์ (crrev.com/c/5017865, ข้อบกพร่อง: 4526)

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

  • BiDi: อัปเดตการขึ้นต่อกันของ BiDi Mapper (crrev.com/c/4994305, ข้อบกพร่อง: 4226)
  • เปลี่ยนกลับมาใช้ IS_OZONE_{X11, WAYLAND} แทน OZONE_PLATFORM_* เนื่องจากมีข้อบกพร่อง (crrev.com/c/5086571, เปลี่ยนกลับ crrev.com/c/5083096, ข้อบกพร่อง: 1500494)
  • ย้ายข้อมูลโค้ดใน commands_unittest.cc เพื่อใช้ base::BindLambdaForTesting แทน base::Passed ที่เลิกใช้งานแล้ว (crrev.com/c/5078589, ข้อบกพร่อง: 1326449)
  • ปรับโครงสร้าง session.new เพื่อแยกการจัดการความสามารถของบอยเลอร์เพลต (เช่น testName, binary, browserName) ออกเป็นเมธอดเฉพาะ และตรวจสอบว่าคำสั่งเคารพความสามารถในลักษณะเดียวกับคำสั่งคลาสสิก (crrev.com/c/5004665, crrev.com/c/5001510, Bug: 4358, Bug: 4610)
  • นำการใช้ส่วนหัว base/strings/string_piece_forward.h ที่เลิกใช้งานแล้วออก (crrev.com/c/5008994, ข้อบกพร่อง: 691162)
  • เตรียมพร้อมสำหรับการเปลี่ยน net::IOBuffer เป็นคลาสที่ไม่เป็นเจ้าของโดยใช้ net::IOBufferWithSize สำหรับกรณีที่เป็นเจ้าของ (crrev.com/c/4996470, ข้อบกพร่อง: 1493389)
  • เปิดตัวและใช้ base::RandBytesAsVector() เพื่อหลีกเลี่ยงการจัดเก็บค่าไบนารีในสตริง (crrev.com/c/5018451)
  • ปิดใช้การทดสอบการผสานรวม Python ที่ล้มเหลวอย่างต่อเนื่องหลายรายการใน Mac เพื่อป้องกันไม่ให้การสร้างสีเขียวเกิดจากข้อแก้ตัวในการวิเคราะห์ของ LUCI (crrev.com/c/4998771, ข้อบกพร่อง: 1486604, ข้อบกพร่อง: 1486520, ข้อบกพร่อง: 1486474, ข้อบกพร่อง: 1481915)
  • เปลี่ยนชื่อ webdriver_tests_suite (และ wpt_tests_suite) เป็น chrome_wpt_tests เพื่อกำหนดรูปแบบการตั้งชื่อชุด WPT ให้เป็นมาตรฐานในเครื่องมือสร้างการทดลองใช้ Linux (crrev.com/c/5014293, ข้อบกพร่อง: 1474702)
  • เปลี่ยนConfirmIdpLoginคำสั่ง FedCM webdriver ให้เป็นคำสั่ง ClickDialogButton ที่ขยายได้มากขึ้นซึ่งยอมรับพารามิเตอร์ DialogButton (crrev.com/c/5003255, ข้อบกพร่อง: 1499341)
  • อัปเดตทรัพยากร Dependency ของ crossbench พร้อมการแก้ไขและฟีเจอร์มากมาย รวมถึงการแยกวิเคราะห์ประเภทไดรเวอร์ที่ดีขึ้น Stub เครือข่าย และการรองรับ iOS (crrev.com/c/5009937)
  • เพิ่ม #include <string> ที่ขาดหายไปใน chrome_finder.h เพื่อให้เป็นไปตามข้อกำหนดของ IWYU (crrev.com/c/4994605, ข้อบกพร่อง: 957519)

ChromeDriver 120

ฟีเจอร์ใหม่

  • BiDi: เพิ่มการรองรับคำสั่ง session.new และ session.end ซึ่งช่วยให้ผู้ใช้สร้างและสิ้นสุดเซสชันได้โดยตรงผ่านคำสั่ง BiDi (crrev.com/c/4941941, ข้อบกพร่อง: 4496)
  • BiDi: เพิ่มการรองรับคำสั่ง session.status PureBiDi ซึ่งช่วยให้ผู้ใช้สร้างการเชื่อมต่อ WebSocket ที่ไม่ได้ผูกกับเซสชันใดๆ และดึงข้อมูลสถานะเซสชันได้ (crrev.com/c/4938596, ข้อบกพร่อง: 4496) (กลับมาอีกครั้งหลังจากที่ก่อนหน้านี้มีการย้อนกลับใน crrev.com/c/4922097)
  • BiDi: อัปเดตการขึ้นต่อกันของ BiDi Mapper และปรับให้สอดคล้องกับกระบวนการเรียกใช้ Mapper แบบใหม่ที่ง่ายขึ้น (crrev.com/c/4952609, ข้อบกพร่อง: 4226)
  • เซ็นเซอร์: ใช้คำสั่งเซ็นเซอร์เสมือนใน browser_protocol.pdl และเลเยอร์ CDP (โดเมนการจำลอง) เพิ่มการรองรับส่วนการทำงานอัตโนมัติของข้อกำหนดเซ็นเซอร์ทั่วไป (crrev.com/c/4770864, ข้อบกพร่อง: 1278377)
  • เซ็นเซอร์: เพิ่มคำสั่งส่วนขยาย ChromeDriver สำหรับการจัดการเซ็นเซอร์เสมือน การแปลพารามิเตอร์ WebDriver เป็นการเรียก CDP ใหม่ (crrev.com/c/4770866, ข้อบกพร่อง: 1278377)
  • เซ็นเซอร์: เพิ่มเส้นทางโค้ด content_shell สำหรับการจัดการเซ็นเซอร์เสมือนผ่าน testdriver.js โดยข้าม ChromeDriver ทั้งหมดสำหรับการทดสอบเว็บ (crrev.com/c/4770865, ข้อบกพร่อง: 1278377)
  • การลดการติดตาม: เพิ่มการรองรับ ChromeDriver สำหรับการลดการติดตามการตีกลับ (DIPS) ซึ่งช่วยให้การทำงานอัตโนมัติของข้อกำหนด nav-tracking-mitigations (crrev.com/c/4873672, ข้อบกพร่อง: 1474656) (หมายเหตุ: เราได้ย้อนกลับการเปลี่ยนแปลงนี้ชั่วคราวเนื่องจากทดสอบไม่สำเร็จใน Mac ที่ crrev.com/c/4938394)

การแก้ไขข้อบกพร่อง

  • การเริ่มต้น: เพิ่มการค้นหา Headless Shell ลงใน ChromeDriver เพื่อให้ค้นหาไบนารี chrome-headless-shell ได้หากมีการขอผ่านความสามารถและไม่มีการระบุเส้นทางที่ชัดเจน (crrev.com/c/4987262, ข้อบกพร่อง: 4358) (กลับมาอีกครั้งหลังจากที่ก่อนหน้านี้ได้ย้อนกลับใน crrev.com/c/4984449)
  • WebSockets: รองรับการแฮนด์เชคปิด WebSocket บางส่วนเพื่อให้มั่นใจว่า ChromeDriver จะตอบกลับด้วยเฟรม CLOSE เมื่อได้รับจากปลายทางระยะไกล (crrev.com/c/4931500, ข้อบกพร่อง: 4499)
  • สิทธิ์: เปิดเผย options.disclaim_responsibility เป็นแฟล็กการสร้างเพื่อให้การสร้างของผู้ให้บริการ (เช่น Microsoft Teams) ปิดได้ ซึ่งจะป้องกันไม่ให้ข้อความแจ้งสิทธิ์ของ macOS ขัดขวางการทดสอบอัตโนมัติ (crrev.com/c/4929495, ข้อบกพร่อง: 1223643)
  • การปฏิบัติตามมาตรฐาน C++: แก้ไขลักษณะการทำงานที่ไม่ได้กำหนด (UB) ซึ่ง UBSan ตรวจพบเมื่อแคสต์ Double ที่อยู่นอกช่วงเป็น Int โดยการเพิ่มการตรวจสอบช่วง (crrev.com/c/4980055, ข้อบกพร่อง: 1394755)
  • FedCM: นำการรองรับไวยากรณ์ส่วนหัวแบบเก่าออกเพื่อให้เป็นไปตามไวยากรณ์มาตรฐาน login-status-http (crrev.com/c/4957073, ข้อบกพร่อง: 1381501)

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

  • เพิ่มการทดสอบการผสานรวม testReturnFrameElement เพื่อยืนยันลักษณะการทำงานของ ChromeDriver เกี่ยวกับการถือว่า window.frameElement เป็นการอ้างอิงที่ล้าสมัย (crrev.com/c/4983549, ข้อบกพร่อง: 4477)
  • ปรับปรุงการบันทึกโดยตรวจสอบว่า ChromeDriver บันทึกเส้นทางที่เฉพาะเจาะจงซึ่งพยายามค้นหาไบนารีของเบราว์เซอร์ (crrev.com/c/4976116, ข้อบกพร่อง: 4539)
  • เปลี่ยนชื่อฟังก์ชัน base::Time ต่างๆ ให้สื่อความหมายมากขึ้น (เช่น FromDoubleT() เป็น FromSecondsSinceUnixEpoch()) (crrev.com/c/4956111)
  • ปรับโครงสร้างnet::StringIOBufferคอนสตรัคเตอร์และIOBufferการสร้างอินสแตนซ์เพื่อหลีกเลี่ยงการคัดลอกสตริงที่ไม่จำเป็นและการจัดสรรที่มีความยาวเป็น 0 (crrev.com/c/4938384, crrev.com/c/4959174)
  • ปรับปรุงการจัดการสตริงโดยแทนที่ base::StrCat ด้วย + ในกรณีที่เกี่ยวข้อง และใช้ base::AppendHexEncodedByte() (crrev.com/c/4963465, crrev.com/c/4977165)
  • เปลี่ยนชื่อ DIR_SOURCE_ROOT เป็น DIR_SRC_TEST_DATA_ROOT ในการทดสอบ //chrome* เพื่อความชัดเจน (crrev.com/c/4916045, ข้อบกพร่อง: 1264897)
  • ปิดใช้การทดสอบที่ไม่เสถียรPureBidiTestในเครื่องมือสร้าง Mac (crrev.com/c/4983555, ข้อบกพร่อง: 1496826)

ChromeDriver 119

ฟีเจอร์ใหม่

  • BiDi: เพิ่มการรองรับการแก้การอ้างอิงออบเจ็กต์ภายในที่อ่อนแอซึ่งปลายทางระยะไกลส่งคืนระหว่างการเรียกฟังก์ชันระยะไกล (crrev.com/c/4886760, ข้อบกพร่อง: 4536)
  • FedCM: เพิ่มคำสั่ง confirmidpsignin ที่มีคำนำหน้าของผู้ให้บริการเพื่อรองรับช่วงทดลองใช้จากต้นทางของ IDP Sign-In Status API (crrev.com/c/4811725, ข้อบกพร่อง: 1451884)

การแก้ไขข้อบกพร่อง

  • การจำลองอุปกรณ์เคลื่อนที่: แก้ไขปัญหาที่อุปกรณ์ที่กำหนดไว้ล่วงหน้าซึ่งไม่มีคำแนะนำสำหรับไคลเอ็นต์ (เช่น การกำหนดค่ารุ่นเก่า) ใช้งานไม่ได้เนื่องจากมีการป้อนค่าเริ่มต้นที่เหมาะสม (crrev.com/c/4887254, ข้อบกพร่อง: 4550)
  • คลาสสิก: แก้ไขการซีเรียลไลซ์ออบเจ็กต์ Map และ Set แล้ว ตอนนี้ระบบจะซีเรียลไลซ์ออบเจ็กต์อย่างถูกต้องเป็น Object แทนที่จะเป็น Collection เนื่องจากไม่มีพร็อพเพอร์ตี้ length (crrev.com/c/4881378, ข้อบกพร่อง: 4031)
  • คลาสสิก: คืนค่าตรรกะให้ดาวน์โหลดและใช้ ChromeDriver เวอร์ชันล่าสุดที่เข้ากันได้เสมอในระหว่างการทดสอบ โดยจะกลับไปใช้เวอร์ชันที่เฉพาะเจาะจงก็ต่อเมื่อเกิดปัญหาความเข้ากันได้เท่านั้น (crrev.com/c/4779613, การเปลี่ยนกลับ crrev.com/c/4778973)
  • FedCM: ปรับคำสั่งการทำงานอัตโนมัติของเบราว์เซอร์ให้เป็นมาตรฐานโดยเปลี่ยนชื่อ Signin เป็น Login (confirmidplogin) เพื่อให้สอดคล้องกับการอภิปรายข้อกำหนด FedCM ล่าสุด (crrev.com/c/4901302, ข้อบกพร่อง: 1451884)
  • การทดสอบ: แก้ไขการทดสอบ FedCM ที่ล้มเหลวเมื่อปิดใช้คุกกี้ของบุคคลที่สามโดยการเปิดใช้ IDP Sign-In Status API อย่างชัดเจนในระหว่างการดำเนินการทดสอบ (crrev.com/c/4889802, ข้อบกพร่อง: 1484833)
  • การทดสอบ: แทนที่ตัวยึดตำแหน่ง URL ที่ไม่ถูกต้อง ~NOTFOUND ด้วย ^NOTFOUND ในโปรแกรมเรียกใช้การทดสอบเพื่อให้เป็นไปตามการเปลี่ยนแปลงการบังคับใช้มาตรฐาน URL ของ Chromium ที่กำลังจะเกิดขึ้น (crrev.com/c/4845589, ข้อบกพร่อง: 1416013)

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

  • BiDi: อัปเดตทรัพยากร Dependency ของ BiDi Mapper เป็นเวอร์ชัน 0.4.27 ซึ่งนำการแก้ไขและฟีเจอร์ล่าสุดมาให้ (crrev.com/c/4862031, crrev.com/c/4890322)
  • แทนที่ API ของพอยน์เตอร์/ความยาวหลายรายการใน //url ด้วย std::string_view เพื่อเพิ่มความปลอดภัยและความสะดวก (crrev.com/c/4897456)
  • เปลี่ยนgenerateWebDriverValueยูทิลิตีให้ใช้ตัวเลือกการซีเรียลเลสแบบลึก (serializationOptions.serialization: deep) ที่โปรโตคอล BiDi (crrev.com/c/4889644) มีให้โดยกำเนิด
  • เพิ่มการทดสอบการผสานรวมเพื่อยืนยันว่าการค้นหาภายใต้การอ้างอิงองค์ประกอบที่ล้าสมัยจะแสดงข้อผิดพลาด "การอ้างอิงองค์ประกอบที่ล้าสมัย" อย่างถูกต้อง (crrev.com/c/4886793, ข้อบกพร่อง: 4440)
  • ปรับปรุงการจัดรูปแบบลักษณะโค้ดใน call_function.js (crrev.com/c/4882511, ข้อบกพร่อง: 4031)
  • ปรับปรุงความคิดเห็นของผู้ใช้โดยแจ้งให้ผู้ใช้ทราบอย่างชัดเจนเมื่อเชื่อมต่อผ่าน WebSockets ว่าระบบรองรับไปป์และแนะนำให้ใช้เพื่อความน่าเชื่อถือและความปลอดภัยที่ดียิ่งขึ้น (crrev.com/c/4882626, ข้อบกพร่อง: 3480)
  • อัปเดตการกำหนดค่าชุด WPT เพื่อเก็บถาวร results.html สำหรับการทดสอบ webdriver_tests_suite เพื่อให้ UI ที่ดีขึ้นสำหรับการดูผลลัพธ์ (crrev.com/c/4873223)
  • แก้ไขการผสานรวมเครื่องมือสำหรับนักพัฒนาเว็บกับ WebView โดยการทำเครื่องหมาย WebView WebContents และตั้งค่าประเภทเครื่องมือสำหรับนักพัฒนาเว็บเป็น popup_page แทน other (crrev.com/c/4842093)
  • เปลี่ยนชื่อเป้าหมายบิลด์ WPT chrome_wpt เป็น chrome_wpt_tests เพื่อให้สอดคล้องกัน และนำเป้าหมาย webdriver_wpt_tests ที่ซ้ำกันออก (crrev.com/c/4847474, ข้อบกพร่อง: 1474702)
  • ย้ายข้อมูล run_py_tests.py จากไลบรารี optparse ที่เลิกใช้งานแล้วไปยัง argparse (crrev.com/c/4849411, ข้อบกพร่อง: 4557)

ChromeDriver 118

ฟีเจอร์ใหม่

  • การทดสอบการผสานรวม: เปิดตัวการทดสอบการผสานรวม C++ สำหรับ ChromeDriver ซึ่งช่วยให้ทดสอบคลาสที่เฉพาะเจาะจงกับทราฟิก CDP จริงได้ และเติมเต็มช่องว่างระหว่างการทดสอบหน่วยกับการทดสอบการผสานรวม Python (crrev.com/c/4707855, ข้อบกพร่อง: 4528)
  • Crossbench: อัปเดตcrossbenchทรัพยากร Dependency พร้อมการปรับปรุงมากมาย ซึ่งรวมถึงเรื่องราวการเปรียบเทียบประสิทธิภาพใหม่ การรองรับแพลตฟอร์มและอุปกรณ์ที่ดีขึ้น การแก้ไขข้อบกพร่องที่ได้รับการปรับปรุง และการแก้ไขต่างๆ (crrev.com/c/4803743)

การแก้ไขข้อบกพร่อง

  • ความสามารถ: แก้ไขปัญหาที่ไม่มี debuggerAddress ในความสามารถที่ส่งคืนในการกำหนดค่าเริ่มต้น ตอนนี้ระบบจะส่งคืนอย่างถูกต้องเพื่อรองรับการสื่อสาร BiDi ที่อิงตาม CDP ของ Selenium (crrev.com/c/4789068, ข้อบกพร่อง: 4533)
  • ความสามารถ: ตรวจสอบว่า ChromeDriver แสดงค่า platformName มาตรฐาน (เช่น "linux", "windows", "mac") ตามที่ข้อกำหนด WebDriver กำหนด (crrev.com/c/4797735, ข้อบกพร่อง: 4548)

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

  • ย้ายข้อมูลโค้ดใน MockSocket เพื่อให้ใช้ base::span<> แทนพอยน์เตอร์ดิบเพื่อความปลอดภัยที่ดียิ่งขึ้น (crrev.com/c/4832086)
  • นำการใช้งาน base::raw_ptr และ base::raw_ref ที่เลิกใช้งานแล้วออกเพื่อใช้รูปแบบที่ไม่มีคุณสมบัติ raw_ptr และ raw_ref แทนผ่านการล้างข้อมูลอัตโนมัติ (crrev.com/c/4773481)
  • ย้อนกลับการเปลี่ยนแปลงที่ใช้ ChromeDriver เวอร์ชันล่าสุดเสมอชั่วคราว เนื่องจากทำให้เกิดข้อขัดข้องในช่องทางที่เสถียร/เบต้าของ Windows (crrev.com/c/4778973, ย้อนกลับ crrev.com/c/4777430)
  • การกำหนดค่า WPT (การทดสอบแพลตฟอร์มเว็บ) ที่ปรับแล้ว รวมถึงการระงับข้อผิดพลาดเฉพาะการแก้ไขข้อบกพร่องใน pointer_touch.py และการใช้การยืนยันโฟกัสฝั่งเบราว์เซอร์สำหรับ Fenced Frame (crrev.com/c/4844810, crrev.com/c/4572517)
  • เพิ่ม #include <vector> ที่ขาดหายไปใน client_hints.h เพื่อให้เป็นไปตามข้อกำหนดของ IWYU (crrev.com/c/4767547)
  • ย้ายประเภทพื้นฐานเฉพาะของ Apple (ScopedTypeRef, ScopedCFTypeRef, scoped_nsautorelease_pool) ไปยังเนมสเปซ base::apple:: โดยปล่อยให้ส่วนหัวการส่งต่อชั่วคราวสำหรับ Crashpad (crrev.com/c/4799213, crrev.com/c/4790744, crrev.com/c/4790741, crrev.com/c/4784010)

ChromeDriver 117

ฟีเจอร์ใหม่

การแก้ไขข้อบกพร่อง

  • ความเสถียร: แก้ไขการเข้าถึงตัวชี้ Null ที่ทำให้ ChromeDriver ขัดข้อง ซึ่งส่งผลให้เกิดข้อผิดพลาด ConnectionRefused ระหว่างการทดสอบ (crrev.com/c/4675633, ข้อบกพร่อง: 1457101)
  • การนำทาง: แก้ไขปัญหาที่ข้อผิดพลาด NoSuchExecutionContext และ NoSuchWindow ของ Chrome ระหว่างการนำทางไม่ได้รับการจัดการอย่างสม่ำเสมอ ตอนนี้ทั้ง 2 ข้อผิดพลาดได้รับการแมปอย่างถูกต้องเพื่อลองดำเนินการอีกครั้ง (crrev.com/c/4667156, ข้อบกพร่อง: 4459)
  • การจำลองอุปกรณ์เคลื่อนที่: แก้ไขตรรกะการอนุมานสำหรับ clientHints.mobile ตอนนี้ระบบจะอนุมานจาก userAgent ใน Android อย่างถูกต้อง และค่าเริ่มต้นจะเป็น false ในแพลตฟอร์มอื่นๆ ซึ่งแก้ไขปัญหาที่แท็บเล็ตรายงานอย่างไม่ถูกต้องว่าเป็นอุปกรณ์เคลื่อนที่ (crrev.com/c/4649348, ข้อบกพร่อง: 4243)
  • การสร้างเซสชัน: อัปเดตการสร้างเซสชันเพื่อให้แสดงรหัสข้อผิดพลาด SessionNotCreated มาตรฐานอย่างถูกต้องเมื่อเกิดข้อผิดพลาด โดยเป็นไปตามข้อกำหนด WebDriver ของ W3C อย่างเคร่งครัด (crrev.com/c/4638223, ข้อบกพร่อง: 4379) หมายเหตุ: ต่อมาเราได้ย้อนกลับการเปลี่ยนแปลงนี้ เนื่องจากเส้นทางโค้ดบางเส้นทางต้องใช้รหัสข้อผิดพลาดที่แตกต่างกัน (crrev.com/c/4651188)

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

  • ยกเลิกสคริปต์กระบวนการเผยแพร่ ChromeDriver ด้วยตนเอง เนื่องจากตอนนี้ ChromeDriver ผสานรวมเข้ากับกระบวนการเผยแพร่ Chrome อย่างเต็มรูปแบบแล้ว และพร้อมใช้งานผ่านโครงสร้างพื้นฐานของ Chrome สำหรับการทดสอบ (crrev.com/c/4520687, ข้อบกพร่อง: 4142)
  • ย้ายข้อมูลโครงสร้างพื้นฐานของ WPT (การทดสอบแพลตฟอร์มเว็บ) เพื่อใช้wptrunner Harness อย่างเป็นทางการแทนrun_webdriver_tests.pyที่กำหนดเอง ซึ่งช่วยปรับปรุงความเร็วในการดำเนินการและความน่าเชื่อถือได้อย่างมาก และทำให้มั่นใจได้ว่า ChromeDriver จะเกิดใหม่ระหว่างการทดสอบเพื่อแยกข้อขัดข้อง (crrev.com/c/4723147, crrev.com/c/4676070, crrev.com/c/4639168)
  • รีแฟกเตอร์ ChromeLauncher และคลาสที่เกี่ยวข้องอย่างกว้างขวางเพื่อรองรับการเปลี่ยนไปใช้ไปป์ ลดการเชื่อมต่อกับ DevToolsHttpClient และย้ายตรรกะ WebSocket ไปยังสาขาเฉพาะ (crrev.com/c/4632801, crrev.com/c/4674345)
  • เปลี่ยนชื่อฟิลด์ BrowserInfo.is_headless ที่ทำให้เข้าใจผิดเป็น BrowserInfo.is_headless_shell เพื่อความชัดเจน (crrev.com/c/4650452, ข้อบกพร่อง: 4358)
  • แทนที่เมธอด base::Value ที่เลิกใช้งานแล้วต่างๆ ด้วยเมธอด base::Value::Dict ที่เทียบเท่ากันในปัจจุบัน (เช่น FindDouble(), Set(), size()) ในโค้ดเบส (crrev.com/c/4258936, crrev.com/c/4336805, crrev.com/c/4461067)112.0.5603.0, 113.0.5653.0, 114.0.5733.0
  • นำการใช้ [w]ctype.h ออกเพื่อใช้ยูทิลิตีสตริงฐานที่ปลอดภัยกว่า และใช้ฟีเจอร์ใหม่สำหรับ base::expected (crrev.com/c/4749459, crrev.com/c/4755226)
  • ใช้คำสั่งอัตโนมัติ get_fedcm_dialog_title และ select_fedcm_account ใน TestDriver สำหรับ WPT ของ FedCM (crrev.com/c/4618303)
  • อัปเดตสคริปต์การสร้างเครื่องมือแปลง BiDi ให้ทำงานได้อย่างถูกต้องไม่ว่าไดเรกทอรีการทำงานปัจจุบันจะเป็นอะไร (crrev.com/c/4670550)
  • แปลงไฟล์ /chrome/test/chromedriver เพื่อใช้ ARC (Automatic Reference Counting) ในบิลด์ macOS โดยเพิ่มบอยเลอร์เพลตที่จำเป็น (crrev.com/c/4663602)
  • พยายามปิดใช้การสื่อสารผ่านไปป์โดยค่าเริ่มต้นผ่านการคอมมิตที่อนุมัติโดยอัตโนมัติ แต่การเปลี่ยนแปลงนี้ส่งผลต่อการกำหนดค่าเท่านั้นโดยไม่ได้เปลี่ยนแปลงลักษณะการทำงานเริ่มต้นของไปป์โดยค่าเริ่มต้นที่เปิดตัวก่อนหน้านี้ (crrev.com/c/4683947)

ChromeDriver 116

ฟีเจอร์ใหม่

  • FedCM: เพิ่มความสามารถใหม่ที่ช่วยให้ไคลเอ็นต์ตรวจสอบได้ว่า ChromeDriver รองรับคำสั่ง FedCM หรือไม่โดยไม่ต้องเรียกใช้คำสั่งและตรวจหาข้อผิดพลาด (crrev.com/c/4624924, ข้อบกพร่อง: 1356159)
  • การทดสอบ: เปิดใช้การนำหน้าต่างทดสอบกลับมาใช้ซ้ำสำหรับการทดสอบ testharness ที่เรียกใช้ผ่าน ChromeDriver ใน wptrunner เพื่อประเมินผลกระทบต่อประสิทธิภาพและความไม่เสถียร (crrev.com/c/4515180, ข้อบกพร่อง: 1394572)

การแก้ไขข้อบกพร่อง

  • การปฏิบัติตามมาตรฐาน C++: แก้ไขลักษณะการทำงานที่ไม่ได้กำหนดซึ่งเกิดจากการใช้การแจงนับที่กำหนดขอบเขต (enum class) อย่างไม่ถูกต้องในสตริงรูปแบบโดยตรง ซึ่งเป็นการแก้ไขคำเตือนใหม่ของคอมไพเลอร์ Clang (crrev.com/c/4628112, ข้อบกพร่อง: 1456289)
  • FedCM: แก้ไขสาเหตุที่อาจทำให้การทดสอบไม่เสถียรโดยการแก้ไขกรณีขอบที่ทำให้ setdelayenabled ทำงานไม่ถูกต้อง (crrev.com/c/4606064, ข้อบกพร่อง: 1453412)

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

  • BiDi: เพิ่มทรัพยากร Dependency ของ BiDi Mapper และอัปเดตสคริปต์บิลด์เพื่อดึงข้อมูลการแก้ไขล่าสุดจาก "main" โดยค่าเริ่มต้น (crrev.com/c/4615087, crrev.com/c/4615791, ข้อบกพร่อง: 4226)
  • เปลี่ยน ChromeDriver ให้เปิดและเขียนไฟล์ทั้งหมดโดยใช้การเข้ารหัส UTF-8 อย่างชัดเจน (crrev.com/c/4614522)
  • รีแฟกเตอร์ ChromeImpl เพื่อลดการพึ่งพา DevToolsHttpClient และลดการใช้ SyncWebSocketFactory และ BrowserInfo เพื่อเตรียมพร้อมสำหรับการสื่อสารผ่านไปป์แทน WebSockets (crrev.com/c/4571690, crrev.com/c/4571199, ข้อบกพร่อง: 3480)
  • นำ "โหมดเริ่มต้น" ที่เลิกใช้งานแล้วสำหรับเฟรมที่มีการปิดกั้นออก และอัปเดตการทดสอบที่เกี่ยวข้องเพื่อเปิดใช้แฟล็กฟีเจอร์ใหม่ต่อไป ซึ่งจะย้ายข้อมูลไปยังการประมูล FLEDGE ต่อไป (crrev.com/c/4558645)
  • ปรับปรุงการทดสอบ FedCM โดยแทนที่ข้อความยืนยัน WaitForCondition ทั่วไปด้วย assertTrue เพื่อระบุอย่างชัดเจนเมื่อเกิดการหมดเวลา (crrev.com/c/4590211)
  • ทำเครื่องหมายคำเตือน raw_ptr ที่ทราบว่าไม่เสถียรและค้างอยู่ใน linux-rel การทดสอบหน่วย (crrev.com/c/4598070)
  • อัปเดตไฟล์ OWNERS สำหรับเครื่องมือแมป BiDi (crrev.com/c/4614518)

ChromeDriver 115

ฟีเจอร์ใหม่

  • การจำลองอุปกรณ์เคลื่อนที่: เพิ่มการรองรับคำแนะนำสำหรับไคลเอ็นต์ User Agent ในการจำลองอุปกรณ์เคลื่อนที่ ซึ่งช่วยให้ ChromeDriver แยกวิเคราะห์คำแนะนำสำหรับไคลเอ็นต์จากความสามารถและค่าที่กำหนดล่วงหน้า แล้วส่งไปยัง Chrome ได้ (crrev.com/c/4498667, crrev.com/c/4466129, ข้อบกพร่อง: 4243)
  • การจำลองอุปกรณ์เคลื่อนที่: อัปเดตค่าที่กำหนดล่วงหน้าของการจำลองอุปกรณ์เคลื่อนที่ให้ใช้เวอร์ชันหลักของเบราว์เซอร์โฮสต์แทนเวอร์ชัน ChromeDriver เมื่อแทนที่สตริงรูปแบบ %s ใน User Agent (crrev.com/c/4502850, ข้อบกพร่อง: 4243)
  • การตั้งค่า: เพิ่มการรองรับการดาวน์โหลด ChromeDriver เวอร์ชันที่เฉพาะเจาะจงสำหรับช่องที่กำหนด ซึ่งช่วยปรับปรุงสถานการณ์การทำงานอัตโนมัติที่ ChromeDriver ทำงานบนแพลตฟอร์มอื่น (เช่น Android/WebView) นอกเหนือจากโฮสต์ (crrev.com/c/4550281)116.0.5791.0

การแก้ไขข้อบกพร่อง

  • คลาสสิก: แก้ไขปัญหาที่การไม่สามารถแก้ไขโหนดจะแสดงข้อผิดพลาด UnknownError อย่างไม่ถูกต้องแทนที่จะเป็นข้อผิดพลาด NoSuchElement มาตรฐาน (crrev.com/c/4508952, ข้อบกพร่อง: 4440)
  • การจำลองอุปกรณ์เคลื่อนที่: เพิ่มการยืนยันที่เข้มงวดมากขึ้นในการตั้งค่าล่วงหน้าสำหรับการจำลองอุปกรณ์เคลื่อนที่เพื่อบังคับให้ต้องตั้งค่าสถานะ clientHints.mobile เป็นจริงหากสตริง userAgent มีคำว่า "Mobile" (crrev.com/c/4507142, ข้อบกพร่อง: 4243)
  • การจำลองมือถือ: ย้ายข้อมูลการลบล้าง DeviceMetrics เพื่อใช้คำสั่ง CDP แทนโดเมนที่เทียบเท่าที่เลิกใช้งานแล้ว Page (crrev.com/c/4502614, ข้อบกพร่อง: 4243)Emulation.setDeviceMetricsOverride

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

  • BiDi: อัปเดตทรัพยากร Dependency ของ BiDi Mapper เพื่อเปิดใช้ฟีเจอร์การเรียงอันดับอย่างละเอียด (crrev.com/c/4535936, crrev.com/c/4512195)
  • นำเมธอด Connect ที่เลิกใช้งานแล้วออกจาก DevToolsClient เพื่อเตรียมพร้อมสำหรับการย้ายข้อมูล ChromeDriver ให้สื่อสารผ่านไปป์ (crrev.com/c/4521485, ข้อบกพร่อง: 3480)
  • ย้ายฐานของโค้ดให้ใช้ base::Value::Dict แทน base::Value และแทนที่เมธอดที่เลิกใช้งานแล้ว เช่น FindStringKey(), SetKey() และ SetByDottedPath() (crrev.com/c/4529788, crrev.com/c/4522701, crrev.com/c/4515800, crrev.com/c/4507150)
  • เปลี่ยนไปใช้ฟังก์ชัน string_util.h แทน [w]ctype.h เพื่อการแปลงประเภทที่ปลอดภัยยิ่งขึ้น (crrev.com/c/4529187)
  • เปลี่ยนตรรกะการโหลดไฟล์เริ่มต้นให้ใช้เส้นทางแบบสัมบูรณ์เพื่อให้มั่นใจถึงความสอดคล้องกันเมื่อสคริปต์และ Chrome ทำงานในตำแหน่งต่างๆ (crrev.com/c/4504656)
  • นำเมธอด CallAsyncFunction() ที่ไม่ได้ใช้ออกจาก web_view.h (crrev.com/c/4518363, ข้อบกพร่อง: 3376)
  • เปลี่ยนชื่อ base::raw_ptr เป็น raw_ptr โดยอัตโนมัติเพื่อให้เป็นไปตามค่ากำหนดของคู่มือสไตล์ (crrev.com/c/4476651)

ChromeDriver 114

ฟีเจอร์ใหม่

  • คลาสสิก: ส่งข้อมูล MobileDevice ไปยัง MobileEmulationOverrideManager เพื่อวางรากฐานสำหรับคำแนะนำสำหรับไคลเอ็นต์และ UserAgent ในอนาคต (crrev.com/c/4447524)
  • การทดสอบ: เพิ่มฟิกเจอร์ทดสอบสำหรับ ChromeDriver (crrev.com/c/4459939)

การแก้ไขข้อบกพร่อง

  • Headless: แก้ไขข้อขัดข้องในโหมด Headless ใหม่โดยการไม่สนใจคำขอแสดงตัวอย่างก่อนพิมพ์ที่เขียนสคริปต์ไว้ (เช่น window.print()) อย่างเงียบๆ เพื่อให้ลักษณะการทำงานสอดคล้องกับโหมด Headless เก่า (crrev.com/c/4436313, ข้อบกพร่อง: 4385)
  • ความสามารถ: แก้ไขข้อบกพร่องการใช้หลังจากย้ายในความสามารถของ ChromeDriver (crrev.com/c/4462094, ข้อบกพร่อง: 4243)
  • DevTools: นำ DCHECK ใน DevToolsClientImpl::SendCommandInternal ออกเพื่อป้องกันไม่ให้เกิดข้อขัดข้องเมื่อการเชื่อมต่อเครื่องมือสำหรับนักพัฒนาเว็บขาดหายไป เนื่องจากนี่ไม่ใช่การละเมิดค่าคงที่ (crrev.com/c/4370486, ข้อบกพร่อง: 4385)

การเปลี่ยนแปลงและการปรับโครงสร้างภายใน

  • BiDi: อัปเดตการขึ้นต่อกันของ BiDi Mapper (crrev.com/c/4418727)
  • แก้ไขประกาศเตือนเกี่ยวกับ Pointer ที่ค้างหลายรายการระหว่างการดำเนินการทดสอบหน่วยโดยการจัดการการอ้างอิงที่ไม่มีเจ้าของและการทำลายในเครื่องอย่างเหมาะสมใน WebViewImpl และการทดสอบเครื่องมือบันทึกประสิทธิภาพ (crrev.com/c/4374824, crrev.com/c/4368179)
  • ย้ายฐานของโค้ดเพื่อใช้ base::Value API v2 ใหม่ แทนที่เมธอดที่เลิกใช้งานแล้ว เช่น Value::SetPath(), Value::SetStringPath() และ base::ListValue (crrev.com/c/4452309, crrev.com/c/4431420, crrev.com/c/4422897, crrev.com/c/4377520)
  • แทนที่การใช้ base::GUID ทั้งหมดด้วย base::Uuid เพื่อให้สอดคล้องกับการเปลี่ยนชื่อไลบรารีฐานหลัก (crrev.com/c/4455083)
  • ดำเนินการล้างข้อมูลโค้ดอื่นๆ ซึ่งรวมถึงการย่อโค้ด การใช้การดำเนินการแบบ Monadic สำหรับ expected การนำโค้ดที่ไม่ได้ใช้แล้วออก และการแก้ไขการละเมิดรูปแบบ (crrev.com/c/4475368, crrev.com/c/4464199)
  • อัปเดตการทดสอบที่เกี่ยวข้องกับเฟรมที่จำกัดเพื่อใช้แอตทริบิวต์ config แทนแอตทริบิวต์ src ที่เลิกใช้งานแล้ว (crrev.com/c/4382231)
  • นำการใช้งาน ShadowDOMV0 ที่ไม่มีประสิทธิภาพออก (crrev.com/c/4388302)
  • ยกเลิกการเพิ่ม Flag สำหรับการแก้ไข PDF ของ Skia (SK_IGNORE_PDF_EOF_NEWLINE_FIX) เพื่ออนุญาตการกำหนดค่าพื้นฐานใหม่ (crrev.com/c/4401451)
  • อัปเดตเจ้าของสคริปต์การทดสอบ ChromeDriver และปรับเปลี่ยนเพื่อสร้าง JSON การกำหนดค่าสำหรับ Pinpoint โดยเฉพาะ (crrev.com/c/4437492, crrev.com/c/4298554)
  • เพิ่มการรวม (<cstring>) ที่ขาดหายไปสำหรับ std::strlen ใน web_view_impl.cc เพื่อแก้ไขปัญหาการสร้าง IWYU (crrev.com/c/4376772)
  • นำไฟล์ทดสอบที่ไม่ได้ใช้ออก (orientation_test.html) (crrev.com/c/4335668)

ChromeDriver 113.0.5672.63

รองรับ Chrome เวอร์ชัน 113

  • แก้ไขปัญหา 4205: รหัสออบเจ็กต์เดียวกันใน Classic และ BiDi [Pri-1]
  • ปัญหาที่แก้ไขแล้ว 4302: อย่าคิดว่า Mapper อยู่ในแท็บแรกใน ExecuteGetWindowHandles [Pri-1]
  • แก้ไขปัญหา 4356: Chrome 110 ไม่ได้ใช้ค่ากำหนด "download.default_directory" [Pri-1]

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 113.0.5672.24

รองรับ Chrome เวอร์ชัน 113

  • แก้ไขปัญหา 4205: รหัสออบเจ็กต์เดียวกันใน Classic และ BiDi [Pri-1]
  • ปัญหาที่แก้ไขแล้ว 4302: อย่าคิดว่า Mapper อยู่ในแท็บแรกใน ExecuteGetWindowHandles [Pri-1]
  • แก้ไขปัญหา 4356: Chrome 110 ไม่ได้ใช้ค่ากำหนด "download.default_directory" [Pri-1]

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 112.0.5615.49

รองรับ Chrome เวอร์ชัน 112

  • ปัญหาที่แก้ไขแล้ว 3517: เปิดใช้ฟีเจอร์การพิมพ์สำหรับ [Pri-] ที่ไม่ใช่แบบไม่มีส่วนหัว
  • แก้ไขปัญหา 4419: ค่าใช้จ่ายสูงใน Speedometer เมื่อใช้ chromedriver [Pri-3]

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 112.0.5615.28

รองรับ Chrome เวอร์ชัน 112

  • ปัญหาที่แก้ไขแล้ว 4357: ปัญหาเกี่ยวกับเซสชันของ Chromedriver เวอร์ชัน 110.0.5481.77 ที่มีตัวเลือก --headless และ --user-data-dir [Pri-1]

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 111.0.5563.64

รองรับ Chrome เวอร์ชัน 111

  • ปัญหาที่แก้ไขแล้ว 4216: เรียกใช้ ChromeDriver ด้วย BiDiMapper ที่กำหนดเอง [Pri-]
  • แก้ไขปัญหา 4300: แฮนเดิลหน้าต่างสามารถทำงานร่วมกันระหว่าง Classic กับ BiDi ได้ [Pri-]
  • ปัญหาที่แก้ไขแล้ว 4325: การจัดการ toJSON ใน jsonSerialize ของ call_function.js เบี่ยงเบนจากมาตรฐาน [Pri-]
  • แก้ไขปัญหา 4330: DCHECK ล้มเหลวที่ DevToolsClientImpl::AddListener [Pri-]
  • ปัญหาที่แก้ไขแล้ว 4357: ปัญหาเกี่ยวกับเซสชัน ChromeDriver ที่มีตัวเลือก --headless และ --user-data-dir [Pri-1]

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 111.0.5563.41

รองรับ Chrome เวอร์ชัน 111

  • ปัญหาที่แก้ไขแล้ว 4357: ปัญหาเกี่ยวกับเซสชัน ChromeDriver ที่มีตัวเลือก --headless และ --user-data-dir [Pri-1]

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 111.0.5563.19

รองรับ Chrome เวอร์ชัน 111

  • ปัญหาที่แก้ไขแล้ว 4216: เรียกใช้ ChromeDriver ด้วย BiDiMapper ที่กำหนดเอง [Pri-]
  • แก้ไขปัญหา 4300: แฮนเดิลหน้าต่างสามารถทำงานร่วมกันระหว่าง Classic กับ BiDi ได้ [Pri-]
  • ปัญหาที่แก้ไขแล้ว 4325: การจัดการ toJSON ใน jsonSerialize ของ call_function.js เบี่ยงเบนจากมาตรฐาน [Pri-]
  • แก้ไขปัญหา 4330: DCHECK ล้มเหลวที่ DevToolsClientImpl::AddListener [Pri-]

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 110.0.5481.77

รองรับ Chrome เวอร์ชัน 110

  • แก้ไขปัญหา 4193: เริ่มเซสชันใหม่ใน Android 13 ไม่สำเร็จ [Pri-]
  • แก้ไขปัญหา 4272: WebSocket ควรพิจารณา code=0 เป็นข้อบ่งชี้ของ FIN [Pri-]
  • แก้ไขปัญหา 4276: แก้ปัญหาการเชื่อมต่อใน ChromeDriver [Pri-]
  • แก้ไขปัญหา 4295: ChromeDriver ที่มี "webSocketUrl": true มีการแข่งขัน [Pri-]
  • แก้ไขปัญหา 4297: ChromeDriver Bidi จัดลำดับไม่ถูกต้อง [Pri-]

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 110.0.5481.30

รองรับ Chrome เวอร์ชัน 110

  • แก้ไขปัญหา 4193: เริ่มเซสชันใหม่ใน Android 13 ไม่สำเร็จ [Pri-]
  • แก้ไขปัญหา 4272: WebSocket ควรพิจารณา code=0 เป็นข้อบ่งชี้ของ FIN [Pri-]
  • แก้ไขปัญหา 4276: แก้ปัญหาการเชื่อมต่อใน ChromeDriver [Pri-]
  • แก้ไขปัญหา 4295: ChromeDriver ที่มี "webSocketUrl": true มีการแข่งขัน [Pri-]
  • แก้ไขปัญหา 4297: ChromeDriver Bidi จัดลำดับไม่ถูกต้อง [Pri-]

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 109.0.5414.74

รองรับ Chrome เวอร์ชัน 109

  • ปัญหาที่แก้ไขแล้ว 4179: เซสชัน BiDi ต้องรองรับการเชื่อมต่อหลายรายการ [Pri-]
  • ปัญหาที่แก้ไขแล้ว 4203: ปรับปรุงข้อมูลเครดิต [Pri-]
  • แก้ไขปัญหา 4263: เกิดข้อขัดข้องเมื่อกด Meta+A [Pri-]

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 109.0.5414.25

รองรับ Chrome เวอร์ชัน 109

  • ปัญหาที่แก้ไขแล้ว 4179: เซสชัน BiDi ต้องรองรับการเชื่อมต่อหลายรายการ [Pri-]
  • ปัญหาที่แก้ไขแล้ว 4203: ปรับปรุงข้อมูลเครดิต [Pri-]
  • แก้ไขปัญหา 4263: เกิดข้อขัดข้องเมื่อกด Meta+A [Pri-]

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 108.0.5359.71

รองรับ Chrome เวอร์ชัน 108 ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 108.0.5359.22

รองรับ Chrome เวอร์ชัน 108

  • ปัญหาที่แก้ไขแล้ว 4204: แก้ไขการทดสอบ test_top_level_and_one_child ที่ล้มเหลวของ WPT [Pri-]
  • ปัญหาที่แก้ไขแล้ว 4215: เปลี่ยนชื่อบิลด์ chromedriver_mac64_m1 เป็น chromedriver_mac_arm64 [Pri-]
  • แก้ไขปัญหา 4221: เกิดข้อขัดข้องเมื่อคำสั่งคลิกปิดเบราว์เซอร์ [Pri-]

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 107.0.5304.62

รองรับ Chrome เวอร์ชัน 107

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 107.0.5304.18

รองรับ Chrome เวอร์ชัน 107

  • แก้ไขปัญหา 4180: ห้ามจัดการคำสั่ง BiDi จนกว่าจะได้รับการแจ้งเตือนว่า BiDiMapper เริ่มทำงานแล้ว [Pri-]
  • ปัญหาที่แก้ไขแล้ว 4198: ChromeDriver BiDi ไม่ควรถือว่า BiDiMapper อยู่ในแท็บแรกเสมอ [Pri-]
  • แก้ไขปัญหา 4207: ข้อผิดพลาดของ WebDriver เมื่อเรียกใช้ WPT [Pri-1]

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 106.0.5249.61

รองรับ Chrome เวอร์ชัน 106

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 106.0.5249.21

รองรับ Chrome เวอร์ชัน 106

  • ปัญหาที่แก้ไขแล้ว 4016: เพิ่มการรองรับ BiDi ขั้นพื้นฐานลงใน ChromeDriver (อิงตาม Mapper) [Pri-1]

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 105.0.5195.52

รองรับ Chrome เวอร์ชัน 105

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 105.0.5195.19

รองรับ Chrome เวอร์ชัน

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 104.0.5112.79

รองรับ Chrome เวอร์ชัน 104

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 104.0.5112.29

รองรับ Chrome เวอร์ชัน 104

  • แก้ไขปัญหา 4121: คำสั่ง WebDriver ล้มเหลวในบางครั้งโดยมีข้อความ "การตอบกลับคำสั่งที่ไม่คาดคิด" [Pri-1]

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 104.0.5112.20

รองรับ Chrome เวอร์ชัน 104

  • แก้ไขปัญหา 4121: คำสั่ง WebDriver ล้มเหลวในบางครั้งโดยมีข้อความ "การตอบกลับคำสั่งที่ไม่คาดคิด" [Pri-1]

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 103.0.5060.134

รองรับ Chrome เวอร์ชัน 103

  • แก้ไขปัญหา 4048: แยกเฟรมเป้าหมาย [Pri-]
  • แก้ไขปัญหา 4121: คำสั่ง WebDriver ล้มเหลวในบางครั้งโดยมีข้อความ "การตอบกลับคำสั่งที่ไม่คาดคิด" [Pri-1]

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 103.0.5060.53

รองรับ Chrome เวอร์ชัน 103

  • แก้ไขปัญหา 4048: แยกเฟรมเป้าหมาย [Pri-]

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 103.0.5060.24

รองรับ Chrome เวอร์ชัน 103

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 102.0.5005.61

รองรับ Chrome เวอร์ชัน 102

  • แก้ไขปัญหา 1309282: chromedriver ไม่รองรับสวิตช์ที่มีหลายค่า [Pri-1]

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 102.0.5005.27

รองรับ Chrome เวอร์ชัน 102

  • แก้ไขปัญหา 1309282: chromedriver ไม่รองรับสวิตช์ที่มีหลายค่า [Pri-1]

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 101.0.4951.41

รองรับ Chrome เวอร์ชัน 101

  • แก้ไขปัญหา 4046: DCHECK เกิดขึ้นเมื่อต่อเฟรมที่มีการปิดกั้นว่าง [Pri-]
  • แก้ไขปัญหา 4080: การเปลี่ยนไปใช้เฟรมที่ซ้อนกันไม่สำเร็จ [Pri-]

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 101.0.4951.15

รองรับ Chrome เวอร์ชัน 101

  • แก้ไขปัญหา 4046: DCHECK เกิดขึ้นเมื่อต่อเฟรมที่มีการปิดกั้นว่าง [Pri-]
  • แก้ไขปัญหา 4080: การเปลี่ยนไปใช้เฟรมที่ซ้อนกันไม่สำเร็จ [Pri-]

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 100.0.4896.60

รองรับ Chrome เวอร์ชัน 100

  • แก้ไขปัญหา 4002: รองรับ Fenced Frame [Pri-]

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 100.0.4896.20

รองรับ Chrome เวอร์ชัน 100

  • แก้ไขปัญหา 4002: รองรับ Fenced Frame [Pri-]

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 99.0.4844.51

รองรับ Chrome เวอร์ชัน 99

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 99.0.4844.35

รองรับ Chrome เวอร์ชัน 99

  • เปลี่ยนกลับแล้ว!!! แก้ไขปัญหา 2269: ใช้อักขระที่ไม่ใช่ BMP ไม่ได้ (โค้ดพอยต์ที่สูงกว่า U+FFFF) [Pri-3]
  • แก้ไขปัญหา chromium:1295243: การถดถอยใน ChromeDriver sendKeys [Pri-1]

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 99.0.4844.17

รองรับ Chrome เวอร์ชัน 99

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 98.0.4758.102

รองรับ Chrome เวอร์ชัน 98

  • แก้ไขปัญหา 3933: การคลิกที่ขอบของวิวพอร์ตไม่มีผลโดยไม่มีข้อผิดพลาด [Pri-]
  • เปลี่ยนกลับแล้ว!!! แก้ไขปัญหา 2269: ใช้อักขระที่ไม่ใช่ BMP ไม่ได้ (โค้ดพอยต์ที่สูงกว่า U+FFFF) [Pri-3]
  • แก้ไขปัญหา chromium:1295243: การถดถอยใน ChromeDriver sendKeys [Pri-1]

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 98.0.4758.80

รองรับ Chrome เวอร์ชัน 98

  • แก้ไขปัญหา 3933: การคลิกที่ขอบของวิวพอร์ตไม่มีผลโดยไม่มีข้อผิดพลาด [Pri-]
  • แก้ไขปัญหา 2269: ใช้อักขระที่ไม่ใช่ BMP ไม่ได้ (โค้ดพอยต์ที่สูงกว่า U+FFFF) [Pri-3]

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 98.0.4758.48

รองรับ Chrome เวอร์ชัน 98

  • แก้ไขปัญหา 3933: การคลิกที่ขอบของวิวพอร์ตไม่มีผลโดยไม่มีข้อผิดพลาด [Pri-]
  • แก้ไขปัญหา 2269: ใช้อักขระที่ไม่ใช่ BMP ไม่ได้ (โค้ดพอยต์ที่สูงกว่า U+FFFF) [Pri-3]

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 97.0.4692.71

รองรับ Chrome เวอร์ชัน 97

  • แก้ไขปัญหา 3878: จัดการพิกัดองค์ประกอบที่เป็นเศษส่วนสำหรับการคลิกองค์ประกอบได้ดีขึ้น [Pri-]

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 97.0.4692.36

รองรับ Chrome เวอร์ชัน 97

  • แก้ไขปัญหา 3878: จัดการพิกัดองค์ประกอบที่เป็นเศษส่วนสำหรับการคลิกองค์ประกอบได้ดีขึ้น [Pri-]

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 97.0.4692.20

รองรับ Chrome เวอร์ชัน 97

  • แก้ไขปัญหา 3878: จัดการพิกัดองค์ประกอบที่เป็นเศษส่วนสำหรับการคลิกองค์ประกอบได้ดีขึ้น [Pri-]

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 96.0.4664.45

รองรับ Chrome เวอร์ชัน 96

  • แก้ไขปัญหา 3445: เข้าถึงองค์ประกอบใน iframe ภายใน Shadow Root ไม่ได้ [Pri-3]

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 96.0.4664.35

รองรับ Chrome เวอร์ชัน 96

  • แก้ไขปัญหา 3445: เข้าถึงองค์ประกอบใน iframe ภายใน Shadow Root ไม่ได้ [Pri-3]

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 96.0.4664.18

รองรับ Chrome เวอร์ชัน 96

  • แก้ไขปัญหา 3445: เข้าถึงองค์ประกอบใน iframe ภายใน Shadow Root ไม่ได้ [Pri-3]

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 95.0.4638.69

รองรับ Chrome เวอร์ชัน 95

  • ปัญหาที่แก้ไขแล้ว 3857: มีการระบุส่วนหัวของโฮสต์หรือส่วนหัวของแหล่งที่มา และไม่ได้อยู่ในรายการที่อนุญาตพิเศษหรือ localhost [Pri-1]
  • เพิ่มอาร์กิวเมนต์ --allowed-origins

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 95.0.4638.54

รองรับ Chrome เวอร์ชัน 95

  • ปัญหาที่แก้ไขแล้ว 3857: มีการระบุส่วนหัวของโฮสต์หรือส่วนหัวของแหล่งที่มา และไม่ได้อยู่ในรายการที่อนุญาตพิเศษหรือ localhost [Pri-1]
  • เพิ่มอาร์กิวเมนต์ --allowed-origins

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 95.0.4638.17

รองรับ Chrome เวอร์ชัน 95

  • ปัญหาที่แก้ไขแล้ว 3857: มีการระบุส่วนหัวของโฮสต์หรือส่วนหัวของแหล่งที่มา และไม่ได้อยู่ในรายการที่อนุญาตพิเศษหรือ localhost [Pri-1]
  • เพิ่มอาร์กิวเมนต์ --allowed-origins

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 95.0.4638.10

รองรับ Chrome เวอร์ชัน 95

  • ปัญหาที่แก้ไขแล้ว 3857: มีการระบุส่วนหัวของโฮสต์หรือส่วนหัวของแหล่งที่มา และไม่ได้อยู่ในรายการที่อนุญาตพิเศษหรือ localhost [Pri-1]
  • เพิ่มอาร์กิวเมนต์ --allowed-origins

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 94.0.4606.113

รองรับ Chrome เวอร์ชัน 94

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 94.0.4606.61

รองรับ Chrome เวอร์ชัน 94

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 94.0.4606.41

รองรับ Chrome เวอร์ชัน 94

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 93.0.4577.63

รองรับ Chrome เวอร์ชัน 93

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 93.0.4577.15

รองรับ Chrome เวอร์ชัน 93

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 92.0.4515.107

รองรับ Chrome เวอร์ชัน 92

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 92.0.4515.43

รองรับ Chrome เวอร์ชัน 92

  • แก้ไขปัญหา 3389: การตรวจสอบโฮสต์สำหรับคำขอ ChromeDriver

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 91.0.4472.101

รองรับ Chrome เวอร์ชัน 91

  • ปัญหาที่แก้ไขแล้ว 1205107: ไม่สามารถรับค่าแอตทริบิวต์สำหรับช่องในเว็บแอปพลิเคชัน

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 91.0.4472.19

รองรับ Chrome เวอร์ชัน 91

  • แก้ไขปัญหา 3744: SendKeys() และ Click() ล้มเหลวอย่างเงียบๆ หลังจากไปยังลิงก์
  • ปัญหาที่แก้ไขแล้ว 3746: ปลายทางแอตทริบิวต์อัปเดตค่าอย่างไม่ถูกต้อง

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 90.0.4430.24

รองรับ Chrome เวอร์ชัน 90

  • แก้ไขปัญหา 3708: GetElementLocation's inView ล้มเหลวสำหรับองค์ประกอบใน Shadow DOM
  • ปัญหาที่แก้ไขแล้ว 3721: รวบรวมบันทึกประสิทธิภาพสำหรับ Service Worker เมื่อเปิดใช้
  • แก้ไขปัญหา 3731: AdbImpl::GetPidByName ทำงานไม่ถูกต้องในระบบปฏิบัติการ Android ที่ไม่ใช่มาตรฐาน เช่น ใน OnePlus
  • ปัญหาที่แก้ไขแล้ว 3733: ความล้มเหลวร้ายแรงกับโดเมนใน localhost
  • แก้ไขปัญหา 3734: ไดรเวอร์ควรแสดงข้อผิดพลาดเมื่อพยายามตั้งค่าคุกกี้ในโดเมนที่ไม่ถูกต้อง
  • แก้ไขปัญหา 3743: ปรับโครงสร้างฟังก์ชันการโทรและแก้ไขปัญหาการนำองค์ประกอบออก

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 89.0.4389.23

รองรับ Chrome เวอร์ชัน 89

  • ปัญหาที่แก้ไขแล้ว 3667: หมดเวลาในการรับข้อความจากโปรแกรมแสดงผล
  • แก้ไขปัญหา 3675: GetElementLocation ใช้เมธอด inView ซึ่งจัดการบูลีนเป็นอาร์เรย์อย่างไม่ถูกต้อง
  • แก้ไขปัญหา 3682: GetElementRegion แสดงขนาดที่ไม่ถูกต้องสำหรับองค์ประกอบที่อยู่นอกวิวพอร์ตบางส่วน
  • แก้ไขปัญหา 3690: ChromeDriver ล้มเหลวหากส่วนขยายใช้ chrome.windows API

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 88.0.4324.96

รองรับ Chrome เวอร์ชัน 88

  • แก้ไขปัญหา 3641: โหลด/แสดงหน้าเว็บไม่ได้เมื่อหน้าต่างเบราว์เซอร์ไม่ได้อยู่ในโฟกัสด้วย Chrome เบต้า v87 และ Chromedriver v(87/86)

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 88.0.4324.27

รองรับ Chrome เวอร์ชัน 88

  • ปัญหาที่แก้ไขแล้ว 3611: เอาต์พุต getText() ใน Protractor แตกต่างจาก <element>.innerText
  • แก้ไขปัญหา 3625: ปรับปรุงความเข้ากันได้ของภาพหน้าจอขององค์ประกอบ
  • แก้ไขปัญหา 3628: การอ้างอิงองค์ประกอบที่ล้าสมัยและ URL ที่ไม่ถูกต้องซึ่งรายงานกลับพร้อมกับ URL ที่มี URL อื่นเป็นส่วนหนึ่งของเส้นทาง
  • ปัญหาที่แก้ไขแล้ว 3631: เพิ่มการรองรับความสามารถ webauthn:extension:largeBlob
  • แก้ไขปัญหา 3635: Chromedriver 86 - chromedriver.quit() ดูเหมือนจะไม่ส่งเหตุการณ์ยกเลิกการโหลดอย่างถูกต้อง
  • แก้ไขปัญหา 3649: การคัดลอกข้อความที่เลือกไปยังคลิปบอร์ดไม่ทำงานใน Windows 10 เมื่อใช้โหมด Headless

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 87.0.4280.88

รองรับ Chrome เวอร์ชัน 87

  • แก้ไขปัญหา 3641: โหลด/แสดงหน้าเว็บไม่ได้เมื่อหน้าต่างเบราว์เซอร์ไม่ได้อยู่ในโฟกัสด้วย Chrome เบต้า v87 และ Chromedriver v(87/86)
  • แก้ไขปัญหา 3657: เบราว์เซอร์พื้นหลังของภาพหน้าจอหมดเวลา

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 87.0.4280.20

รองรับ Chrome เวอร์ชัน 87

  • แก้ไขปัญหา 2421: ลบช่องการส่งต่อพอร์ตเก่าใน adb-server ของ Android
  • ปัญหาที่แก้ไขแล้ว 3474: ต้องอัปเดตรายการอุปกรณ์เคลื่อนที่ที่จำลอง
  • แก้ไขปัญหา 3507: ใช้ "get computed role"
  • แก้ไขปัญหา 3508: ใช้ "get computed label"
  • ปัญหาที่แก้ไขแล้ว 3584: เปลี่ยนชื่อตัวเลือกบรรทัดคำสั่ง ChromeDriver --whitelisted-ips
  • ปัญหาที่แก้ไขแล้ว 3588: การเชื่อมต่อ WebSocket แบบ Bidi
  • แก้ไขปัญหา 3594: การนำทางเสร็จสมบูรณ์ก่อนเวลาอันควรหาก OOPIF โหลดก่อนหน้าหลัก
  • แก้ไขปัญหา 3598: ตัวเลือกบรรทัดคำสั่งสำหรับพอร์ต DevTools ที่จะส่งต่อไปยังซ็อกเก็ต webview_devtools_remote
  • ปัญหาที่แก้ไขแล้ว 3608: Chromedriver debuggerAddress ไม่รองรับ ipv6

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 86.0.4240.22

รองรับ Chrome เวอร์ชัน 86

  • แก้ไขปัญหา 3370: ปิด Chrome อย่างถูกต้อง มิเช่นนั้นระบบจะไม่บันทึกคุกกี้ลงในไฟล์การคงอยู่ของ SQLite อย่างถูกต้อง
  • แก้ไขปัญหา 3401: JS ของฟังก์ชัน Get Element Location ไม่ได้ระบุตำแหน่งกึ่งกลางที่มองเห็นได้ขององค์ประกอบ
  • แก้ไขปัญหา 3462: สำหรับ sendKeys คีย์ CMD ใช้ไม่ได้กับ MAC
  • ปัญหาที่แก้ไขแล้ว 3541: ปรับปรุงบันทึกระหว่างไคลเอ็นต์กับ ChromeDriver
  • แก้ไขปัญหา 3559: แสดงผลเวอร์ชัน Chrome เมื่อ ChromeDriver รายงานว่าไม่เข้ากัน

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 85.0.4183.87

รองรับ Chrome เวอร์ชัน 85

  • แก้ไขปัญหา 3578: Chrome 85 ไม่อนุญาตให้โต้ตอบกับหน้าต่างอย่างราบรื่นเมื่อกล่องโต้ตอบการแจ้งเตือนเปิดอยู่

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 85.0.4183.83

รองรับ Chrome เวอร์ชัน 85

  • ปัญหาที่แก้ไขแล้ว 3577: ChromeDriver 85 ไม่ตรวจพบไดเรกทอรี Chrome ที่เปลี่ยนแปลง (C:\Program Files)

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 85.0.4183.38

รองรับ Chrome เวอร์ชัน 85

  • แก้ไขปัญหา 3214: ChromeDriver78: Sendkeys รีเซ็ตการเลือกข้อความด้วย contenteditable
  • แก้ไขปัญหา 3376: นำคำสั่ง LaunchApp ออกจาก ChromeDriver
  • แก้ไขปัญหา 3432: บางครั้ง NavigationTracker ตรวจไม่พบเมื่อหน้าเว็บโหลดเสร็จแล้ว
  • ปัญหาที่แก้ไขแล้ว 3481: ปลายทางการพิมพ์ใหม่ตามข้อกำหนดของ W3C
  • แก้ไขปัญหา 3488: driver.get ไม่แสดงข้อผิดพลาดเมื่อกำหนดค่าพร็อกซีไม่ถูกต้อง
  • ปัญหาที่แก้ไขแล้ว 3502: ใช้ document.hasFocus() เพื่อตรวจสอบว่าองค์ประกอบโฟกัสอยู่หรือไม่
  • ปัญหาที่แก้ไขแล้ว 3515: selenium.common.exceptions.WebDriverException: Message: unknown error: bad inspector message

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 84.0.4147.30

รองรับ Chrome เวอร์ชัน 84

  • แก้ไขปัญหา 3420: หลังจากเปลี่ยนไปที่หน้าต่างการพิมพ์แล้ว Chromedriver จะหยุดตอบสนอง
  • แก้ไขปัญหา 3421: ไดรเวอร์แสดงข้อความภาษาสลาฟโดยไม่มีรูปแบบ
  • ปัญหาที่แก้ไขแล้ว 3422: GetElementText ใช้ไม่ได้กับ Prototype 1.6.0.3
  • แก้ไขปัญหา 3434: รับข้อความ "ยืนยัน" จากบันทึก "เบราว์เซอร์" ไม่ได้

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 83.0.4103.39

รองรับ Chrome เวอร์ชัน 83

  • อัปเดต Chromedriver ให้ทำงานกับ prototype.js ได้อย่างถูกต้อง

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 83.0.4103.14

รองรับ Chrome เวอร์ชัน 83

  • แก้ไขปัญหา 1778: เลิกใช้งาน launchApp จาก ChromeDriver
  • แก้ไขปัญหา 2520: InitSession อาจรอไปเรื่อยๆ เมื่อ Chrome ไม่ตอบสนอง
  • ปัญหาที่แก้ไขแล้ว 3120: การดาวน์โหลดโหมดไม่มีส่วนหัวจากแท็บใหม่
  • ปัญหาที่แก้ไขแล้ว 3234: ยืนยันว่าพบเครื่องหมายอัฒภาคก่อนสตริงย่อย
  • ปัญหาที่แก้ไขแล้ว 3240: ExecuteGetElementRect ไม่ได้ตรวจสอบสถานะที่ส่งคืนจาก GET_SIZE
  • ปัญหาที่แก้ไขแล้ว 3331: เมธอด get_cookies() แสดงผลคีย์ "หมดอายุ" ประเภท Double แต่ควรเป็น int64 ในโหมด w3c
  • ปัญหาที่แก้ไขแล้ว 3332: บันทึกการหมดเวลาลองใหม่เป็นรุนแรง
  • ปัญหาที่แก้ไขแล้ว 3339: Chromedriver ออกโดยไม่คาดคิดโดยมีรหัสเป็น null, สัญญาณ SIGTRAP
  • ปัญหาที่แก้ไขแล้ว 3351: ปรับปรุงข้อความ "ข้อควรพิจารณาด้านความปลอดภัย"
  • ปัญหาที่แก้ไขแล้ว 3352: รองรับ SendKeys สำหรับองค์ประกอบสี
  • ปัญหาที่แก้ไขแล้ว 3353: Wait for Pending Navigation ยังคงทำงานต่อไปหลังจากที่ทำลายบริบทของเฟรมแล้ว
  • แก้ไขปัญหา 3375: Chromedriver v80 ค้างเมื่อใช้ getPageSource ในบางเว็บไซต์
  • ปัญหาที่แก้ไขแล้ว 3383: ChromeDriver 80 ขึ้นไปใน Windows ดูเหมือนจะออกหรือหยุดทำงานเมื่อใช้คำสั่งบางอย่างขององค์ประกอบหรือคลิก
  • ปัญหาที่แก้ไขแล้ว 3399: นำการตรวจสอบ wasThrown ออก

ChromeDriver 81.0.4044.138

รองรับ Chrome เวอร์ชัน 81

  • อัปเดต Chromedriver ให้ทำงานกับ prototype.js ได้อย่างถูกต้อง

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 81.0.4044.69

รองรับ Chrome เวอร์ชัน 81

  • แก้ไขแล้ว: Chromedriver ขัดข้องใน getPageSource ในบางเว็บไซต์
    • แก้ไขแล้ว: ChromeDriver ขัดข้องในคำสั่งคลิกหรือองค์ประกอบบางอย่าง

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 81.0.4044.20

รองรับ Chrome เวอร์ชัน 81

  • แก้ไขข้อผิดพลาดเมื่อพยายามรับตำแหน่งขององค์ประกอบ HTML
    • ตอนนี้คำสั่ง Get และ Add Cookie จะใช้ได้กับเฟรมที่เฉพาะเจาะจง
    • แก้ไขปัญหาบางอย่างที่เกิดขึ้นกับเว็บไซต์ที่กำหนดออบเจ็กต์ JavaScript มาตรฐานใหม่
    • ChromeDriver จะรอให้การโหลดเสร็จสมบูรณ์ต่อไปหลังจากได้รับข้อความ "เป้าหมายปิดแล้ว"
    • ตอนนี้ Chromedriver จะแสดงรหัสข้อผิดพลาดที่เป็นไปตามข้อกำหนดสำหรับไทม์เอาต์
    • แก้ไข: เวลาในการตอบสนองของ ChromeDriver ช้าอย่างไม่คาดคิดในคำสั่ง NewSession
    • ตอนนี้ระบบรองรับการหมดเวลาที่ผู้ใช้กำหนดซึ่งนานกว่า 10 นาทีแล้ว
    • แก้ไขแล้ว: ChromeDriver เชื่อมต่อกับเครื่องมือสำหรับนักพัฒนาเว็บไม่ได้เนื่องจาก IPv4 กับ IPv6 ไม่ตรงกัน
    • กู้คืนลำดับการค้นหาสำหรับไบนารีของ Chrome ใน Linux

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 80.0.3987.106

รองรับ Chrome เวอร์ชัน 80

  • ลำดับการค้นหาที่กู้คืนแล้วสำหรับไบนารีของ Chrome ใน Linux

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 80.0.3987.16

รองรับ Chrome เวอร์ชัน 80

  • แก้ไขปัญหาการโหลดหน้าเว็บถูกยกเลิกเมื่อใช้พร็อกซี
  • ตอนนี้ Chromedriver จะรอให้เฟรมปัจจุบันโหลด
  • บันทึกของ ChromeDriver จะมีพอร์ตที่ไดรเวอร์ใช้
  • เปิดใช้ SetGeoLocation สำหรับโหมด w3c
  • เพิ่มข้อความแจ้งเตือนที่ขาดหายไปสำหรับสถานะ UnexpectedAlertOpen
  • ปรับปรุงข้อความเมื่อโหลดส่วนขยาย CRX2
  • แก้ไขภาวะแข่งขันที่อาจเกิดขึ้นใน ExecuteGetPageSource
  • ChromeDriver จะเพิ่มแฟล็ก --ignore-certificate-errors เมื่อความสามารถ acceptInsecureCerts เป็นจริง
  • อัปเดตข้อความแสดงข้อผิดพลาดและสถานะการคืนค่าสำหรับบริบทการดำเนินการที่ไม่มี
  • แก้ไขแล้ว: ChromeDriver อาจบล็อกอย่างไม่มีกำหนดขณะรอการนำทางที่รอดำเนินการ
  • เพิ่มแอตทริบิวต์ SameSite ลงใน AddCookie และ GetCookie

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 79.0.3945.36

รองรับ Chrome เวอร์ชัน 79

รวมการเปลี่ยนแปลงต่อไปนี้ในเวอร์ชัน 79.0.3945.16

  • แก้ไขการคำนวณพิกัดขององค์ประกอบที่ไม่ถูกต้อง

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 79.0.3945.16

รองรับ Chrome เวอร์ชัน 79

  • แก้ไขข้อขัดข้องของ ChromeDriver ที่เกิดจากการแจ้งเตือน JavaScript ที่เริ่มทำงานระหว่างการเรียกใช้คำสั่ง
    • แก้ไขข้อบกพร่องที่ทำให้ Chromedriver ล็อกเมื่อมีการแจ้งเตือนขณะถ่ายภาพหน้าจอ
    • นำ --ignore-certificate-errors ออกจากคำสั่งเปิด Chrome
    • เปลี่ยนแพลตฟอร์มและ platformName เป็น windows ใน Win10
    • แก้ไข window.navigator.webdriver ที่ไม่ได้กำหนดเมื่อยกเว้น "enable-automation"
  • แก้ไขการทดสอบ WPT "test_not_editable_inputs[hidden]"
    • แก้ไขข้อผิดพลาด "คลิกองค์ประกอบไม่ได้" เมื่อใช้โหมดไม่มีส่วนหัว

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 78.0.3904.105

รองรับ Chrome เวอร์ชัน 78

รวมถึงการเปลี่ยนแปลงต่อไปนี้ในเวอร์ชัน 78.0.3904.70: * แก้ไขการคำนวณพิกัดขององค์ประกอบที่ไม่ถูกต้อง

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 78.0.3904.70

รองรับ Chrome เวอร์ชัน 78

รวมการเปลี่ยนแปลงต่อไปนี้ในเวอร์ชัน 78.0.3904.11

  • ย้อนกลับการเปลี่ยนแปลงเพื่อปรับขนาดภาพหน้าจอบนจอแสดงผล Retina เนื่องจากมีการรายงานปัญหาหลายอย่าง

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 78.0.3904.11

รองรับ Chrome เวอร์ชัน 78

  • แก้ไขปัญหาหลายอย่างในการซีเรียลไลซ์ออบเจ็กต์ JavaScript
    • แก้ไขข้อบกพร่องในการจับคู่ความสามารถสำหรับ Chrome บน Android
    • การทำงานอัตโนมัติของสิทธิ์ที่ใช้งาน
    • ขนาดภาพหน้าจอคงที่บนจอแสดงผล Retina
  • แก้ไขการหมดเวลาในการโหลดหน้าเว็บในบางสถานการณ์
    • การจับคู่ความสามารถของ platformName ที่ดียิ่งขึ้น
    • แก้ไขรหัสข้อผิดพลาดที่แสดงขณะเลื่อนเคอร์เซอร์ไปยังตัวเลือกในรายการแบบเลื่อนลง
    • แก้ไขปัญหาที่ส่งผลต่อการดาวน์โหลดในโหมด Headless

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 77.0.3865.40

รองรับ Chrome เวอร์ชัน 77

รวมการเปลี่ยนแปลงต่อไปนี้จากเวอร์ชัน 77.0.3865.10

  • แก้ไขข้อบกพร่อง 2 รายการในการซีเรียลไลซ์และดีซีเรียลไลซ์ออบเจ็กต์ JavaScript
  • แก้ไขการจัดการ platformName: android ขณะจับคู่ความสามารถ

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 77.0.3865.10

รองรับ Chrome เวอร์ชัน 77

  • แก้ไขปัญหาหลายอย่างในการใช้งาน Actions API
    • การดำเนินการโค้ด JavaScript และการจัดการผลลัพธ์ที่ได้รับการปรับปรุง
    • แก้ไขข้อบกพร่องที่ปฏิเสธคำขอ POST ที่มีเนื้อความว่างเปล่าในโหมด OSS อย่างไม่ถูกต้อง
  • เครื่องมือติดตามการนำทางที่ดียิ่งขึ้น
  • รองรับกลยุทธ์การโหลดหน้าเว็บแบบ Eager
    • เพิ่มคำสั่งหน้าต่างใหม่จากข้อกำหนด WebDriver ของ W3C
  • รองรับการบันทึกไฟล์ที่ดาวน์โหลดในโหมดไม่มีส่วนหัว
  • เพิ่มการรองรับการโหลดส่วนขยาย CRX3

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 76.0.3809.126

รองรับ Chrome เวอร์ชัน 76

รวมการเปลี่ยนแปลงต่อไปนี้ในเวอร์ชัน 76.0.3809.68

  • แก้ไขข้อบกพร่อง 2 รายการในการซีเรียลไลซ์และดีซีเรียลไลซ์ออบเจ็กต์ JavaScript

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 76.0.3809.68

รองรับ Chrome เวอร์ชัน 76

รวมการเปลี่ยนแปลงต่อไปนี้จากเวอร์ชัน 76.0.3809.25

  • แก้ไขข้อบกพร่องในการตรวจหาการอ้างอิงแบบวงกลมในออบเจ็กต์ JavaScript
  • แก้ไขข้อบกพร่องที่ทำให้ ChromeDriver ขัดข้องเมื่อเกิดข้อผิดพลาด JavaScript บางประเภท
  • แก้ไขข้อบกพร่องที่ทำให้ API การดำเนินการโต้ตอบกับองค์ประกอบภายใน Shadow DOM ไม่ได้
    • แก้ไขข้อบกพร่องในการติดตามสถานะแป้นกดร่วมระหว่างคำสั่ง API ของการดำเนินการ
    • แก้ไขข้อบกพร่องในการติดตามตำแหน่งของตัวชี้ระหว่างคำสั่ง API ของการดำเนินการ
    • บันทึกข้อผิดพลาด "เรียกใช้คำสั่งที่ไม่ใช่มาตรฐาน W3C ขณะอยู่ในโหมด W3C ไม่ได้" ลงในไฟล์บันทึกเมื่อเกิดข้อผิดพลาด

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 76.0.3809.25

รองรับ Chrome เวอร์ชัน 76

รวมการเปลี่ยนแปลงต่อไปนี้ในเวอร์ชัน 76.0.3809.12

  • แก้ไขข้อบกพร่องที่ปฏิเสธคำขอ POST ที่มีเนื้อความว่างเปล่าในโหมด OSS อย่างไม่ถูกต้อง
  • เพิ่มปลายทางใหม่สำหรับการดึงข้อมูลบันทึกของ Chrome
    • เพิ่มปลายทางสำหรับคำสั่ง Is Displayed ในโหมด W3C

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 76.0.3809.12

รองรับ Chrome เวอร์ชัน 76

  • การติดตั้งใช้งาน Actions API เสร็จสมบูรณ์
    • ปรับปรุงการจัดการการหมดเวลาของสคริปต์ให้เป็นไปตามข้อกำหนด
    • ปรับปรุงการเรียงอันดับผลลัพธ์จากคำสั่ง Execute Script
    • แก้ไขปัญหาในการเลื่อนองค์ประกอบไปยังมุมมอง
    • เพิ่มการจัดการคีย์ Cancel ที่กำหนดไว้ในข้อกำหนด WebDriver
    • แก้ไขการประมวลผลการตอบกลับข้อผิดพลาดของการแจ้งเตือนที่ไม่ได้จัดการ
    • แก้ไขการประมวลผลองค์ประกอบ <details>
    • อัปเดตตัวเลือก excludeSwitches เพื่ออนุญาตให้ใช้ขีดนำหน้าในชื่อสวิตช์ได้

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 75.0.3770.140

รองรับ Chrome เวอร์ชัน 75

รวมการเปลี่ยนแปลงต่อไปนี้ในเวอร์ชัน 75.0.3770.90

  • แก้ไขข้อบกพร่องที่ทำให้ ChromeDriver ขัดข้องเมื่อเกิดข้อผิดพลาด JavaScript บางประเภท
  • แก้ไขข้อบกพร่องในการรักษาสถานะแป้นกดร่วมระหว่างการดำเนินการ

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 75.0.3770.90

รองรับ Chrome เวอร์ชัน 75

รวมการเปลี่ยนแปลงต่อไปนี้ในเวอร์ชัน 75.0.3770.8

  • แก้ไขข้อบกพร่องที่ปฏิเสธคำขอ POST ที่มีเนื้อความว่างเปล่าในโหมด OSS อย่างไม่ถูกต้อง
  • เพิ่มปลายทางใหม่สำหรับการดึงข้อมูลบันทึกของ Chrome

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 75.0.3770.8

รองรับ Chrome เวอร์ชัน 75

การเปลี่ยนแปลงที่เห็นได้ชัดที่สุดคือตอนนี้ ChromeDriver ทำงานในโหมดที่สอดคล้องกับมาตรฐาน W3C โดยค่าเริ่มต้น การเปลี่ยนแปลงอื่นๆ มีดังนี้

  • แก้ไขข้อบกพร่องที่ทำให้เกิดเหตุการณ์เบลอ 2 ครั้งในระหว่างการล้างองค์ประกอบ
  • เปลี่ยนชื่อความสามารถ loggingPrefs เป็น goog:loggingPrefs ตามที่มาตรฐาน W3C กำหนด
  • แก้ไขการจัดการข้อผิดพลาดในโหมด W3C
    • การจัดการที่ถูกต้องในการสร้างคุกกี้โดยไม่มีจุดนำหน้าในชื่อโดเมน
    • อนุญาตค่า Null สำหรับการหมดเวลาของสคริปต์
    • แก้ไขคำสั่ง Send Keys ขององค์ประกอบไปยังอินพุตไฟล์ที่มีแอตทริบิวต์ "multiple"
    • แก้ไขคำสั่ง Get Active Element เพื่อแสดงข้อผิดพลาด "ไม่มีองค์ประกอบดังกล่าว" เมื่อไม่มีองค์ประกอบที่ใช้งานอยู่
    • แก้ไขการไปยัง URL ที่มีรูปแบบไม่ถูกต้องเพื่อแสดงข้อผิดพลาด "อาร์กิวเมนต์ไม่ถูกต้อง"
    • แก้ไขรหัสสถานะ HTTP เมื่อได้รับรหัสเซสชันที่ไม่ถูกต้อง
    • แก้ไขการตอบกลับข้อผิดพลาดเมื่อไม่มีพารามิเตอร์อินพุตหรือมีรูปแบบไม่ถูกต้อง
    • แก้ไขคำสั่ง Execute Script เพื่อจัดการความคิดเห็น JavaScript ที่เน้นบรรทัด

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 74.0.3729.6

รองรับ Chrome เวอร์ชัน 74

  • แก้ไขข้อบกพร่องที่สร้างไฟล์ debug.log โดยไม่คาดคิดใน Windows
  • แก้ไขการคลิกเมาส์และการลาก / วางภายในเอกสาร SVG
  • เพิ่มส่วนหัว Cache-Control ในการตอบกลับจาก ChromeDriver
  • แก้ไขประเภทข้อผิดพลาดเมื่อองค์ประกอบอื่นดักจับการคลิก
  • แก้ไขข้อบกพร่องที่ทำให้ ChromeDriver ทำงานล้มเหลวในอุปกรณ์ Linux ที่ไม่มี /dev/shm
  • แก้ไขเหตุการณ์การดับเบิลคลิกบางประเภท
  • คำสั่ง Get Sessions ที่แก้ไขแล้ว
  • แก้ไขข้อผิดพลาดในการตรวจสอบคำสั่งเปลี่ยนไปใช้เฟรม
  • แก้ไขคำสั่งรับแหล่งที่มาของหน้า

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 73.0.3683.68

รองรับ Chrome เวอร์ชัน 73

  • แก้ไขข้อบกพร่องที่สร้างไฟล์ debug.log โดยไม่คาดคิดใน Windows
  • แก้ไขรหัสข้อผิดพลาดที่ส่งคืนจากคำสั่ง Execute Script ในบางสถานการณ์
  • เพิ่มส่วนหัว Cache-Control ในการตอบกลับจาก ChromeDriver
  • ตั้งค่าให้เซิร์ฟเวอร์ HTTP รักษาการเชื่อมต่อไว้โดยค่าเริ่มต้น
  • แก้ไขคำสั่งปิดหน้าต่างเพื่อให้จัดการพรอมต์ของผู้ใช้ได้อย่างถูกต้อง
  • แก้ไขรหัสข้อผิดพลาดที่แสดงเมื่อส่งคีย์ไปยังองค์ประกอบที่ปิดใช้
  • ปรับปรุงการจัดการค่าระยะหมดเวลาให้เป็นไปตามข้อกำหนด
  • ปรับปรุงการปฏิบัติตามข้อกำหนดของคำสั่งเพิ่มคุกกี้
    • เพิ่มความยาวคิวการฟังของเซิร์ฟเวอร์ HTTP
  • แก้ไขคำสั่ง Is Element Displayed ใน Shadow DOM v0
    • เพิ่มคำเตือนเกี่ยวกับการเปลี่ยนแปลงลักษณะการทำงานของคำสั่ง Element Clear ในไฟล์บันทึก
  • แก้ไขคำสั่ง Execute Script เพื่อแปลง document.all เป็นรูปแบบ JSON อย่างถูกต้อง
  • ปรับปรุงการจัดการการอ้างอิงองค์ประกอบที่ไม่ถูกต้อง

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 2.46

รองรับ Chrome v71-73

  • แก้ไขรหัสข้อผิดพลาดที่ส่งคืนจากคำสั่ง Execute Script ในบางสถานการณ์
  • ตั้งค่าให้เซิร์ฟเวอร์ HTTP รักษาการเชื่อมต่อไว้โดยค่าเริ่มต้น
  • แก้ไขคำสั่งปิดหน้าต่างเพื่อให้จัดการพรอมต์ของผู้ใช้ได้อย่างถูกต้อง
  • แก้ไขรหัสข้อผิดพลาดที่แสดงเมื่อส่งคีย์ไปยังองค์ประกอบที่ปิดใช้
  • ปรับปรุงการจัดการค่าระยะหมดเวลาให้เป็นไปตามข้อกำหนด
  • ปรับปรุงการปฏิบัติตามข้อกำหนดของคำสั่ง Add Cookie
  • ปรับปรุงการปฏิบัติตามข้อกำหนดของคำสั่งเปลี่ยนไปใช้เฟรม
  • เพิ่มความยาวคิวการฟังของเซิร์ฟเวอร์ HTTP
  • แก้ไขคำสั่ง Is Element Displayed ใน Shadow DOM v0
  • คำสั่งดับเบิลคลิกองค์ประกอบคงที่
  • เพิ่มคำเตือนเกี่ยวกับการเปลี่ยนแปลงลักษณะการทำงานของคำสั่ง Element Clear ในไฟล์บันทึก
  • แก้ไขคำสั่ง Execute Script เพื่อแปลง document.all เป็นรูปแบบ JSON อย่างถูกต้อง
  • ปรับปรุงการจัดการการอ้างอิงองค์ประกอบที่ไม่ถูกต้อง

ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น

ChromeDriver 2.45

รองรับ Chrome v70-72

  • แก้ไขเซสชันใหม่ไม่เป็นไปตามข้อกำหนด
  • แก้ไขไม่ให้ ChromeDriver เปิด Chrome หากเวอร์ชันของ Chrome และ ChromeDriver ไม่เข้ากัน
  • แก้ไขคำสั่ง Find Element ที่แสดงรหัสข้อผิดพลาดไม่ถูกต้องเมื่อใช้ตัวระบุที่ไม่ถูกต้อง
  • แก้ไขรหัสสถานะ ChromeDriver บางรายการไม่ถูกต้อง
  • แก้ไขข้อผิดพลาดในการคอมไพล์ใน JS ภายใน WebViewImpl::DispatchTouchEventsForMouseEvents
  • คำสั่งขนาดหน้าต่างคงที่ควรจัดการพรอมต์ของผู้ใช้
  • แก้ไข ChromeDriver ไม่ได้เริ่ม Chrome อย่างถูกต้องด้วยตัวเลือก Chrome "user-data-dir="
  • คำสั่ง Fixed Status ไม่เป็นไปตามข้อกำหนด
  • แก้ไขเพิ่มการรองรับ strictFileInteractability

ChromeDriver 2.44

รองรับ Chrome เวอร์ชัน 69-71

  • Fixed WindowMaximize ใน Mac
  • แก้ไขข้อผิดพลาด 'alert open error' ที่ไม่ถูกต้องสำหรับการเรียกแฮนเดิลหน้าต่าง
  • Fixed Element Send Keys ควรได้รับพร็อพเพอร์ตี้ "text" ในโหมด W3C
  • แก้ไขกรณีพิเศษของ XML ที่ไม่ได้จัดการ Is Element Enabled ตามข้อกำหนด
  • แก้ไขกรณีพิเศษของ XML ที่ไม่ได้จัดการค่า CSS ขององค์ประกอบ Get ตามข้อกำหนด
  • แก้ไข Set Window Rect ต้องตรวจสอบอินพุตที่ไม่ถูกต้อง
  • แก้ไขการรองรับโหมด unhandledPromptBehavior ใหม่

ChromeDriver 2.43

รองรับ Chrome เวอร์ชัน 69-71

การเปลี่ยนแปลงมีดังนี้

  • แก้ไขการแยกวิเคราะห์การกำหนดค่าพร็อกซีไม่เป็นไปตามมาตรฐาน
  • แก้ไขคำสั่งเปิดแอปที่ไม่เสถียร
  • แก้ไขการถ่ายภาพหน้าจอขององค์ประกอบภายใน iframe ไม่ถูกต้อง
  • เพิ่มการรองรับการปรับขนาดหน้าต่างผ่านการเชื่อมต่อระยะไกลใน ChromeDriver
  • แก้ไขรหัสข้อผิดพลาดที่ไม่ได้จัดการในองค์ประกอบ Clear
  • แก้ไขปัญหาการไม่รอจนกว่าองค์ประกอบจะปรากฏ
  • แก้ไขแล้ว ไม่ได้ใช้พร็อพเพอร์ตี้องค์ประกอบ Get
  • การเปลี่ยนเป็นเฟรมคงที่ไม่ได้เป็นไปตามข้อกำหนด
  • แก้ไข Execute Async Script ไม่แสดงรหัสข้อผิดพลาดตามข้อกำหนด
  • แก้ไขการเรียกใช้สคริปต์ไม่แสดงรหัสข้อผิดพลาดที่เป็นไปตามข้อกำหนด
  • แก้ไขรหัสข้อผิดพลาดใน ExecuteGet ไม่เป็นไปตามข้อกำหนด
  • แก้ไขข้อความแจ้งที่ส่งไม่แสดงรหัสข้อผิดพลาดตามข้อกำหนด
  • แก้ไข clear() ใน input type="date" ที่ทำให้องค์ประกอบดูเหมือนว่าผู้ใช้แก้ไขไม่ได้
  • แก้ไข Chromedriver ให้รับแฮนเดิลหน้าต่างสำหรับแท็บที่เปิดด้วยตนเอง
  • แก้ไขอนุญาตให้ต่อท้ายหรือเริ่มไฟล์บันทึกใหม่สำหรับ Chromedriver
  • แก้ไขปัญหาเซสชันใหม่ไม่เรียกใช้โหมด W3C หากมีการตั้งค่าแฟล็กใน firstMatch

ChromeDriver 2.42

รองรับ Chrome v68-70

การเปลี่ยนแปลงมีดังนี้

  • แก้ไข ClickEelement ในการจำลองมือถือ
  • แก้ไข IP ที่อนุญาตพิเศษด้วย IPv4
  • แก้ไขการเริ่มต้น ChromeDriver ด้วยแฟล็ก whitelisted-ips ใน Mac OS
  • แก้ไข SetTimeout เพื่อยอมรับทั้งรูปแบบก่อน W3C และ W3C
  • แก้ไขภาพหน้าจอขององค์ประกอบที่ถ่าย
  • แก้ไข ChromeDriver กำลังมองหาไบนารีของ Chrome ใน PATH ของระบบด้วย
  • แก้ไขการขยายหน้าต่างและเต็มหน้าจอ
  • ใช้ฟีเจอร์การเล่นบันทึกซ้ำ ( ยังใช้ไม่ได้กับ Android และ Remote Browser)
  • แก้ไขรหัสข้อผิดพลาดบางรายการที่ไม่เป็นไปตามมาตรฐาน W3C
  • แก้ไข console.log ที่มีอาร์กิวเมนต์หลายรายการซึ่งระบบจัดการไม่ถูกต้อง
  • แก้ไข GetElementRect เพื่อให้ใช้ค่าทศนิยมได้
  • การจำลองการสัมผัสแบบคงที่

ChromeDriver 2.41

รองรับ Chrome v67-69

การเปลี่ยนแปลงมีดังนี้

  • แก้ไขปัญหาเมื่อ ChromeDriver ทำงานด้วยตัวเลือก "whitelisted-ips"
  • ระบบจะแสดงพอร์ตการแก้ไขข้อบกพร่องจากระยะไกลในความสามารถ
  • ใช้การรับขนาดหน้าต่างใน Android แล้ว
  • ปรับปรุงข้อความแสดงข้อผิดพลาดในการเปิดใช้ Chrome บนเดสก์ท็อป
  • ChromeDriver จะล้มเหลวอย่างรวดเร็วเมื่อไม่สามารถเริ่มไบนารีของ Chrome ได้
  • ค่าที่แสดงผลของ Close Window เป็นไปตามข้อกำหนด