إصدارات Chrome الأقدم
في ما يلي إصدارات ChromeDriver المتوافقة مع الإصدارات القديمة من Chrome.
لمزيد من المعلومات حول اختيار الإصدار المناسب من ChromeDriver، يُرجى الاطّلاع على صفحة اختيار الإصدار.
ChromeDriver 148
إصلاح الأخطاء
- الوصول إلى نموذج المستند (DOM): تم إصلاح عُطل كان يحدث عند محاكاة النقر على زر داخل إطار iframe مضمّن في جذر shadow مغلق. لم يكن بإمكان JavaScript المستخدَم سابقًا العثور على رقم تعريف عنصر إطار المالك، لأنّه لم يكن بإمكانه اختراق جذور الظل المغلقة. أما التنفيذ الجديد، فيستخدم التنسيق
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، إعادة التوجيه crrev.com/c/7160150 بعد التراجع crrev.com/c/7170750). تمت معالجة أخطاء مختلفة في IWYU مرتبطة بـbase/logging.h(crrev.com/c/7730403، Bug: 499476145). - معايير C++: تم استبدال عمليات التحقّق المكرّرة من الخريطة
count(key)التي تليها عمليات البحث بعمليات وصول أكثر فعالية إلى المكرّرfind(key)(crrev.com/c/7705392 وcrrev.com/c/7693277 والخطأ: 452950815). تمت إضافة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). - التبعيات: تم طرح الاعتمادية
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 للالتزام بدليل أسلوب Google C++، وتم تغيير
DecodeURLModeإلىDecodeUrlModeوDecodeURLEscapeSequences()إلىDecodeUrlEscapeSequences()(crrev.com/c/7593238). تمت إضافةurl::UrlEscapeDecoderلتبسيط استخدام فك ترميز عناوين URL في جميع أنحاء قاعدة الرموز (crrev.com/c/7610180). تمت إزالة عمليات التضمين الزائدة عن الحاجةbuild/branding_buildflags.hمن ملفات//chrome(crrev.com/c/7595125، الخطأ: 40318405). تمت إزالة منطقBUILDFLAG(IS_FUCHSIA)من//chrome، باستثناء ما ورد في ChromeDriver (crrev.com/c/5485913، الخطأ: 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إلى فلتر الاختبارات غير الثابتة، وتم تخطّيه في جميع عمليات التشغيل بدلاً من تخطّيه في وضع التشغيل بدون واجهة مستخدم فقط (crrev.com/c/7545378، الخطأ: 481485821).
التغييرات وعمليات إعادة البناء الداخلية
- معايير C++: تمت إعادة تسمية
base::DictValueوbase::ListValueإلى الأسماء الحديثة (base::Value::Dictوbase::Value::List) في//chrome(crrev.com/c/7515855 وcrrev.com/c/7514475 وBug: 478100525). تم استبدال استخداماتbase::Contains()بـstd::ranges::contains()(crrev.com/c/7461026، الخطأ: 470391351). تم نقلstd::setوstd::unordered_setإلىbase::fixed_flat_setعند الاقتضاء (crrev.com/c/7521991، Bug: 473916362). تمت إعادة تصميم طلباتbase::JSONReader::Readالتي لم تحدّد خيارات التحليل (crrev.com/c/6990988 وcrrev.com/c/6980533 وBug: 446188265). تم استبدال طلباتbase::JSONWriter::Write()المختلفة بطلباتbase::WriteJson()(crrev.com/c/6969134 وcrrev.com/c/6929101 وBug: 443929217). تم تنظيف طلب#include(crrev.com/c/7366868). تم نقل مراجع الأخطاء في التعليقات لاستخدام أرقام تعريف Buganizer بدلاً من أرقام تعريف Monorail (crrev.com/c/7528268، الخطأ: 321899722). تمت إعادة تسمية علامات الإصدارIS_OZONE_*إلىSUPPORTS_OZONE_*لتوضيحها (crrev.com/c/7535923). - أمان الذاكرة (spanification): تم استبدال استخدام المؤشر غير الآمن بـ
base::spanفيbase/strings/utf_string_conversion_utils.cc(crrev.com/c/7496410، الخطأ: 439964610، الخطأ: 40284755). تمت إضافة المزيد من استخداماتbase::Fileفي اختبارات//chrome(crrev.com/c/7489592، الخطأ: 435317390). تم استبدالmemsetبعملية تهيئة مجمّعة في//chrome(crrev.com/c/6875520، الخطأ: 435317390). تم تحويل علامات#pragma allow_unsafe_buffersالمتبقية إلى علاماتUNSAFE_TODO(crrev.com/c/7132241، Bug: 409340989). - DSE Prewarm: تم تفعيل ميزة
DSEPrewarmفيfieldtrial_testing_config.jsonلنظامَي التشغيل macOS وWindows، وذلك بعد حلّ مشكلة عدم الاستقرار ذات الصلة في اختبار ChromeDriver (crrev.com/c/7489009، وإعادة طرح crrev.com/c/7002185 بعد التراجع عن التغيير crrev.com/c/7452344). (ملاحظة: تم التراجع عن هذه العملية مرة أخرى لاحقًا بسبب زيادة مدة تشغيل الاختبارات على نظام التشغيل Windows (crrev.com/c/7517985، الخطأ: 478888140)). - بيانات التشخيص: تمت إضافة ميزة تتبُّع الموقع الجغرافي للمتصل إلى أحداث التتبُّع
WaitableEventوConditionVariableلتحسين إمكانية تصحيح الأخطاء (crrev.com/c/7487755، الخطأ: 476408124).
ChromeDriver 145
الميزات الجديدة
- الاختبار: تم تعديل إطار عمل الاختبار
run_py_tests.pyلقبول اختبارات السلسلة المحدّدة ذات الأطوال المختلفة (مثل 53 و101 و501 حرفًا) التي تستهدف العناصرinputوtextareaوcontenteditable. يوفّر ذلك تغطية للارتداد لضمان عدم حذف أي أحرف أثناء عملياتsend_keysالطويلة (crrev.com/c/7221410، Bug: 428116078). - الاختبار: تمت إضافة اختبار محدّد للعنصر
<selectlist>في HTML (crrev.com/c/7420729، الخطأ: 342889200).
إصلاح الأخطاء
- لقطات الشاشة: تم إرجاع تغيير حجم لقطات الشاشة للعناصر، لأنّ مواصفات WebDriver لا تحدّد تغيير الحجم وكان ذلك غير متوافق مع وظائف لقطات الشاشة الأخرى (crrev.com/c/7409603، الخطأ: 42323022).
- الاختبار: تم إصلاح حالات الأعطال في
testClientHintsDeviceNameIPhoneXوtestClientHintsDeviceNameIPadمن خلال تعديل توقعات اختبار ChromeDriver لتتطابق مع القيم الصحيحة الحديثة (للحقول platform وplatformVersion وmodel وmobile) التي تم تقديمها في أدوات مطوري البرامج (crrev.com/c/7408699، Bug: 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>غير ضرورية من عناوين//chrome(crrev.com/c/7225838، الخطأ: 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، إعادة التوجيه crrev.com/c/7093216 بعد التراجع crrev.com/c/7104484، الخطأ: 384959114). - الاختبار: تمت إضافة
testMetadata(بما في ذلك اسم الاختبار) إلى حمولة تحميل الاختبار في ChromeDriver لتفعيل أداة التحقّق من الثبات عند استخدام أرقام تعريف الاختبار المنظَّمة (crrev.com/c/7124354، الخطأ: 456432041).
إصلاح الأخطاء
- Target Lifecycle: تم إصلاح خطأ كان يؤدي إلى توقّف ChromeDriver إذا تم فصل إطار رئيسي أثناء انتظار إطار فرعي لردّ على أمر. يفصل ChromeDriver الآن بشكل صريح بشكل متعدٍّ الأُطر الفرعية عندما يكون العنصر الأب
WebViewImplمحظورًا ويتم وضع علامة على أنّه منفصل أثناء معالجة الأمر (crrev.com/c/7080912، الخطأ: 438436830). - إدارة النوافذ: تم إيقاف إخفاء النوافذ المحجوبة في الخلفية، وذلك تحديدًا لجلسات ChromeDriver. يحلّ هذا التغيير المشاكل في WebDriver BiDi حيث يمكن أن تفشل الاختبارات إذا اعتبر المتصفّح بشكل غير صحيح أنّ النافذة محجوبة وتمّ تقييدها (crrev.com/c/7128058، الخطأ: 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، إعادة التوجيه crrev.com/c/7160150 بعد التراجع crrev.com/c/7170750). تم نقل استخداماتbase::HexEncodeإلىbase::HexEncodeLowerالأحدث (crrev.com/c/7103100، الخطأ: 456472080). - أمان الذاكرة (التحويل إلى Span): تم نقل
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لتحقيق مزامنة أكثر موثوقية (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 ويساعد في اختبار واجهات برمجة التطبيقات الخاصة بتسهيل الاستخدام على المنصات (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 الإصدار 4.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، الخطأ: 445332809).
التغييرات وعمليات إعادة البناء الداخلية
- معايير C++: تم استبدال عدة طلبات
base::JSONWriter::Write()تم إيقافها نهائيًا بطلباتbase::WriteJson()، مع الحفاظ على سلوك عرض سلسلة فارغة عند حدوث خطأ عندما لم يتم التحقّق من القيمة المعروضة (crrev.com/c/6969134 وcrrev.com/c/6929101 وBug: 443929217). اشتراط الموافقة الصريحة على خيارات تحليل JSON غير المتوافقة (مثل السماح بالتعليقات) فيbase::JSONReader::Readوbase::JSONReader::ReadAndReturnValueWithError(crrev.com/c/6990988 وcrrev.com/c/6980533 وBug: 446188265) تمت إزالة علامات#pragma allow_unsafe_bufferspragma على مستوى الملف بعد جهود يدوية لتحديد مدى التأثير (crrev.com/c/6778035، الخطأ: 409340989). تمت إزالة استخدامات الماكروLazyInstanceالذي يتضمّن ثغرة أمنية (crrev.com/c/6781377، الخطأ: 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/testGN منسَّقة تلقائيًا (crrev.com/c/6789277، الخطأ: 40760278) - FedCM: تم طرح وظيفة
ShouldShowAccountsPassiveDialogفيIdentityDialogControllerللتحقّق بشكل متزامن مما إذا كان يجب عرض مربّع حوار الحسابات، ما يؤدي إلى إصلاح عُطل مرتبط بعمليات التحقّق غير المتزامنة وأدوات DevTools (crrev.com/c/6780413، الخطأ: 425801332). - DSE Prewarm: تمت إضافة
Page.setPrewarmingAllowedإلى "بروتوكول أدوات مطوّري البرامج" كحلّ قصير الأمد لتفعيل عملية التسخين المسبق أو إيقافها يدويًا، وتم إصلاح الاختبارات ذات الصلة لضمان تفاعلها مع الصفحة الأساسية بشكلٍ صحيح (crrev.com/c/6847287، الخلل: 431928370). تم تفعيل ميزةDSEPrewarmفيfieldtrial_testing_config.jsonلنظامَي التشغيل macOS وWindows بعد حلّ المشاكل (crrev.com/c/6951835، الخطأ: 431928370، الخطأ: 435621391). (ملاحظة: تم التراجع عن كلّ من أمر CDP وتفعيل التجربة الميدانية بسبب حدوث تغييرات قد تؤدي إلى عطل لمستخدمي WebDriver، ما أدّى إلى عرض عناصر غير متوقّعة، وحدوث مشاكل أخرى لاحقة (crrev.com/c/6966133 وcrrev.com/c/6966161 وBug: 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، الخطأ: 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). أعدنا كتابة تعليمات forced unsafe buffer البرمجية (crrev.com/c/6828538). - الاختبار: أضفنا اختبار تراجع للخطأ
crbug.com/413382905(crrev.com/c/6879417). - عمليات الانتقال بين طرق العرض: تم إعادة طرح إصلاح عمليات الانتقال بين طرق العرض الذي يحدّث العمل الذي تم إنجازه قبل حلّ الوعد المكتمل، وذلك بعد أن تبيّن أنّ عملية التراجع التخمينية السابقة المرتبطة بأعطال اختبار ChromeDriver غير صحيحة (crrev.com/c/6846765، إعادة طرح crrev.com/c/6806850 بعد التراجع 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).
التغييرات وعمليات إعادة البناء الداخلية
- معايير C++: تمت إضافة
std::vectorو#includeالناقصَين من خلال Include What You Use (IWYU) (crrev.com/c/6652818، الخطأ: 40216326). تمت إزالة عمليات تضمين غير ضرورية لـgurl.h(crrev.com/c/6578272) و<queue>(crrev.com/c/6570349، Bug: 40318405) في جميع رؤوس//chrome. تم حلّ المشكلةIWYUفيNOTIMPLEMENTED()في//chrome(crrev.com/c/6655452، الخطأ: 41493641). - أمان الذاكرة (تحويل المؤشرات إلى نطاقات): تم تشغيل أداة تحويل المؤشرات إلى نطاقات التلقائية على إصدارات Linux، وتم تعديل الرمز البرمجي لاستخدام النطاقات التي تكون أحجامها معروفة (crrev.com/c/6734592، الخطأ: 431824299). تمت إزالة تعليمات
#pragma allow_unsafe_buffersالبرمجية على مستوى الملف فيchrome/بعد اكتمال عملية نقل البيانات (crrev.com/c/6778035، الخطأ: 409340989). استبعاد أهدافchrome/testمن تحذير-Wexit-time-destructorsللسماح بتفعيل التحذير على مستوى العالم (crrev.com/c/6736532، الخطأ: 40031409، الخطأ: 430332953). تم إصلاح المشاكل المتعلّقة باستخداماتLazyInstanceغير الفعّالة ضمن//chrome(crrev.com/c/6781377، الخطأ: 432815283). - تنظيف: تمت إزالة العلامة
--debug-bidi-mapperمن واجهة سطر الأوامر، لأنّ عملية الانتقال إلى تشغيل BiDi Mapper في هدف مخفي قد اكتملت وأصبحت مستقرة (crrev.com/c/6672011، الخطأ: 408992812). - إزالة: تمت إزالة المراجع المتبقية إلى مشروع
WebLayerغير المتوافق (crrev.com/c/6792520، الخطأ: 40272607). تمت إعادة تنسيق ملفات//chrome/testGN تلقائيًا لتقصير مراجع الأهداف (crrev.com/c/6789277، الخطأ: 40760278). - الاختبار: أضفنا اختبار قبول للتحقّق من إصلاح المشكلة
PerformActionspointerMove(crrev.com/c/6648646، الخطأ: 42322257). - الاختبار: تم التعليق على جزء إنشاء برنامج التشغيل المتوازي في اختبار
testBrowserWithUsedUserDataDir(وتم تسجيل خطأ تتبُّع) لأنّه تسبّب في حدوث أخطاء على نظام التشغيل macOS مرتبطة بعملية القفل الحصرية عند استخدامchrome-headless-shell(crrev.com/c/6470455، الخطأ: 411407649، الخطأ: 380903149). - الاختبار: تم تعديل برنامج تضمين
run_cwt_chromedriver.pyلنظام التشغيل iOS من أجل إتاحة الوسيطة--platform-type(crrev.com/c/6771517، الخطأ: 427548014). - الملاك: تمت إزالة
nvitkovمن الملفchrome/test/chromedriver/OWNERS(crrev.com/c/6771413).
ChromeDriver 139
إصلاح الأخطاء
- بنية التهيئة: تم تعديل بنية تهيئة ChromeDriver لتبقى متوافقة مع تحديثات Selenium WebDriver الإصدار 4.16.0 (crrev.com/c/6630600).
- تحليل الوسيطات: تم دمج وسيطات
--js-flagsالمتعددة (بطريقة مشابهة لطريقة التعامل مع--enable-features) بدلاً من استخدام الوسيطة الأخيرة المقدَّمة فقط. يؤدي ذلك إلى تحسين سهولة الاستخدام عند تمرير علامات V8 المعقّدة (crrev.com/c/6612042، الخطأ: 421941798).
التغييرات وعمليات إعادة البناء الداخلية
- أمان الذاكرة (spanification): تم استبدال استخدامات
base::MakeStringPiece()المتوقّفة نهائيًا بـstd::string_viewفي//chrome/test(crrev.com/c/6628089، Bug: 422940464). تم تضمينbase/strings/string_view_util.hحيث يتم استخدامbase::as_string_view()، وذلك استعدادًا لعمليات نقل مساحة الاسم المستقبلية (crrev.com/c/6625024، Bug: 423048781). - معايير C++: تحسين التوافق مع Include What You Use (IWYU) في
//chromeمن خلال تضمين<vector>بشكل صريح (crrev.com/c/6652818) وbase/notimplemented.h(وإزالةbase/notreached.hفي حال عدم استخدامه) (crrev.com/c/6655452 وBug: 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 for Testing (CfT) إلى دليل مؤقت بدلاً من إتلاف عملية الدفع (crrev.com/c/6635694، الخطأ: 402548382). - البنية الأساسية لعملية الإنشاء: تمت إزالة تبعية غير ضرورية لعملية الإنشاء في
write_build_config.pyمن خلال عدم السماح لأهدافandroid_resources()باحتوائها على ملفات البيان، لأنّ دمج ملفات البيان وتسمية حزمة R.java تتم الآن من خلال سمات متخصّصة (crrev.com/c/6625266، الخطأ: 413331591). - FedCM: تم إصلاح علامة ميزة في إعدادات Finch مرتبطة بـ FedCM (crrev.com/c/6614137، الخطأ: 421959289).
ChromeDriver 138
الميزات الجديدة
- إدارة ميزة العرض: تم تعديل سلوك ChromeDriver الخاص بأقسام إطار العرض ليتوافق مع قرار حديث صادر عن مجموعة عمل CSS، إذ يعرض الآن باستمرار مصفوفة تتضمّن قسمًا واحدًا عند استخدام جهاز قابل للطي بشكل مسطّح، أو لجميع الأجهزة غير القابلة للطي. يتوافق ذلك مع سلوك طلبات البحث عن الوسائط ويقلّل من مخاطر إنشاء بصمة رقمية (crrev.com/c/6469455، Bug: 414430842).
- الإعدادات المفضّلة والحالة المحلية (Android): تمت إضافة إمكانية استخدام
localStateوprefsعند تشغيل ChromeDriver على أجهزة Android. يعتمد ذلك على تصحيح أخطاء Android ويستلزم استخدام علامةuser-data-dirمخصّصة. في الوقت الحالي، يتم ضبط الحالة باستخدام نماذج تلقائية (crrev.com/c/6397155، الخطأ: 406427226).
إصلاح الأخطاء
- الثبات: تم إصلاح عُطل في ChromeDriver كان يحدث على أجهزة macOS عندما أغلق المستخدم مربّع حوار "تجربة التشغيل لأول مرة" (FRE) من خلال الزر "متابعة". حدث التعطُّل نتيجةً لتجاوز حالة الخطأ
kTargetDetachedومحاولة الوصول إلىWebViewغير صالح (crrev.com/c/6538867، الخطأ: 410599467). - اختبار الأداء: تم إصلاح أخطاء في برنامج تشغيل اختبار
crossbenchعلى برامج تتبُّع الأخطاء في نظام التشغيل Windows التي حاولت بشكل غير صحيح تحديد موقع ملف ChromeDriver الثنائي باستخدام مسار../Release_x64قديم عند تمرير--browser=release_x64، ما أدّى إلى الرجوع إلى تنزيل ملف ثنائي أقدم بدلاً من استخدام الإصدار المحلي (crrev.com/c/6502134).
التغييرات وعمليات إعادة البناء الداخلية
- أمان الذاكرة (spanification): تم استبدال المؤشرات غير المحدّدة في
WebSocket::OnReadDuringHandshakeوWebSocket::OnReadDuringOpenبـbase::span، ما أدّى إلى حلّ تحذيراتunsafe-buffer-usage(crrev.com/c/6557346، الخطأ: 354307328). تمت إزالة تعليمات#pragma allow_unsafe_buffersغير الضرورية فيchrome/test/chromedriverالتي لم تعُد مطلوبة بعد عمليات نقل أخرى (crrev.com/c/6503154، الخطأ: 414858406). - معايير C++: تمت إزالة التوجيهات الزائدة عن الحاجة
#include "url/gurl.h"و#include <queue>في جميع عناوينchrome/، مع إضافة تعريفات مسبقة عند الاقتضاء لتحسين أوقات التجميع (crrev.com/c/6578272 وcrrev.com/c/6570349 والخطأ: 40318405). - نقل البيانات من واجهة برمجة التطبيقات: تم نقل البيانات من
RSAPrivateKeyإلىcrypto::PrivateKeyومنSHA256HashStringإلىcrypto::Sha256، وتمت إزالة حالة معالجة الأخطاء القديمة لأنّ واجهات برمجة التطبيقات الجديدة لإنشاء المفاتيح لا يمكن أن تحدث فيها أخطاء (crrev.com/c/6490294، Bug: 372283556). - الاختبار: تمت إضافة السمة
OwnContributionEstimateإلى أوامر التشغيل الآلي لواجهة برمجة التطبيقات Compute Pressure API (كل من عمليات تنفيذ CDP وtestdriver) (crrev.com/c/6373001، الخطأ: 402033762). - الاختبار: تم إصلاح اختبارات الدمج التي تتحقّق من
ClearDisplayFeaturesعلى برامج التتبّع في عملية الدمج المستمر (CFT) من خلال تبسيط التأكيدات للتحقّق من أنّه تم محو أجزاء إطار العرض والرجوع إلى حجم إطار العرض التلقائي (crrev.com/c/6535067، الخطأ: 417195296). - الاختبار: تمّت زيادة مهلات اختبارات Protected Audience WebDriver لمعالجة عدم الاستقرار على برامج CI الآلية الأبطأ (crrev.com/c/6494277).
ChromeDriver 137
الميزات الجديدة
- إدارة ميزات العرض: أضفنا أوامر ChromeDriver لمحاكاة ميزات العرض ومحوها، ما يلبّي متطلبات الأتمتة لواجهات برمجة التطبيقات الخاصة بأقسام إطار العرض (CSS وJS). يتيح ذلك للمطوّرين اختبار سيناريوهات الطي أو المفصل برمجيًا على الأجهزة ذات الشاشة المزدوجة أو القابلة للطي (crrev.com/c/6368674، الخطأ: 40137084).
- BiDi: تم تعديل ChromeDriver لتشغيل BiDi Mapper في هدف مخفي تلقائيًا. يمنع ذلك صفحة
data:,الخاصة بأداة الربط من التداخل مع تنفيذ الاختبار وإمكانية رؤيته. لتصحيح أخطاء أداة الربط، يمكن للعملاء تمرير العلامة--debug-bidi-mapperلتشغيلها في علامة تبويب مرئية (crrev.com/c/6441064، وإعادة توجيه crrev.com/c/6433672 بعد التراجع crrev.com/c/6439633، الخطأ: 402339952).
إصلاح الأخطاء
- BiDi: تم منع ChromeDriver من إغلاق جلسة المتصفّح بأكملها بشكلٍ غير صحيح عند معالجة أوامر BiDi (مثل
browsingContext.close) إذا لم يتمكّن من تتبُّع العناصر التي تم إنشاؤها بواسطة جلسات أخرى في CDP أو BiDi. ويتم الآن مزامنة علامات التبويب ذات المستوى الأعلى بشكلٍ صريح قبل اتّخاذ قرار بإغلاق المتصفّح (crrev.com/c/6440293، الخطأ: 42323838). - BiDi: تمّت المواءمة مع مواصفات WebDriver BiDi الأصلية من خلال التأكّد من أنّ 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، Bug: 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لاستخدام واجهة برمجة التطبيقات التي تعرضstd::optionalبدلاً من المَعلمات الخارجية (crrev.com/c/6417343، Bug: 400758498). - معايير C++: تمت إعادة تصميم أدوات مساعدة معالجة خاصة بنظام التشغيل Windows من
win_util.hإلى عنوانwindows_handle_util.hمخصّص لتجنُّب مشاكل التبعية الدائرية (crrev.com/c/6418805، الخطأ: 406023316). - الاختبار: تمت إضافة معالج نطاق
Browserخاص بنظام التشغيل Android وتنفيذ واجهة برمجة التطبيقاتBrowser.getWindowForTargetلدعم اختبارات إنشاء نوافذ 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). - التبعيات: تم طرح التبعية
catapultيدويًا وتم تعديل ملفاتpydepsومرجعياتdevil_utilالمرتبطة بها (crrev.com/c/6480814 وcrrev.com/c/6466865 وإعادة طرح crrev.com/c/6406098 بعد التراجع crrev.com/c/6448910 والخلل: 397459590).
ChromeDriver 136
الميزات الجديدة
- دورة حياة المتصفّح: تمت إضافة إمكانية خاصة بمتصفّح Chrome
quitGracefullyتجبر ChromeDriver على محاولة إيقاف المتصفّح بشكل سليم (باستخدامBrowser.closeأو SIGTERM) بدلاً منSIGKILLالتلقائي. يمنح ذلك أدوات تصحيح الأخطاء، مثلrr، وقتًا لتفريغ تسجيلاتها قبل إنهاء العملية (crrev.com/c/6322538، وإعادة نشر crrev.com/c/6269180 بعد التراجع لفترة وجيزة crrev.com/c/6320536، الخطأ: 339644807). - الاختبار: تم فحص وسيطة
run_wpt_tests.py --wrapperمن خلال إنشاء نص برمجي مؤقت لبرنامج تضمين يسبق ملف المتصفّح الثنائي بأداة تصحيح الأخطاء (مثلrr) ووسيطاتها. يحلّ هذا الإجراء مشكلة عدم قدرة ChromeDriver على استبدال البرنامج الثنائي مباشرةً عند معالجةargsكخيارات (crrev.com/c/6271108، Bug: 339644807). - الاختبار: تم تفعيل الترجمة من خلال الإعداد المفضّل في
TranslateEnabledTestلتوفير بيئة اختبار يدير فيها ChromeDriver عملية المتصفّح ويتجاوز قيود--remote-debugging-portالجديدة عندما يكون--user-data-dirضمنيًا (crrev.com/c/6354089، الخطأ: 327797500). - DevTools: أضفنا إمكانية استخدام ميزة "فتح نسختين من التطبيق" في "أدوات مطوري البرامج" لفتح علامة تبويب جديدة في نافذة أخرى على Android (crrev.com/c/6352169، خطأ: 401269942، خطأ: 382183406).
إصلاح الأخطاء
- اختيار الاستهداف: تم إصلاح مشكلة عدم فلترة أُطر iframe خارج العملية (OOPIF) بتنسيق PDF التي تم فتحها في عروض الضيوف من قائمة الاستهدافات ذات المستوى الأعلى عند إيقاف ميزة
PdfOopif. تم توسيع نطاق الفلتر ليشمل البادئةchrome-extension، ما يؤدي إلى حلّ الخطأ وتوفير تغطية لإضافات Chrome المستندة إلى الإصدار 3 من Manifest التي تنشئ علامات تبويب (crrev.com/c/6383500، الخطأ: 396611138). - اختيار الهدف: تم إصلاح مشكلة تراجع تسبّبت في تعذُّر تنفيذ الأمر
getWindowHandles()مع الحالةconnection refusedعند استهداف "تطبيقات Chrome" المجمّعة (crrev.com/c/6317161، الخطأ: 396622746).
التغييرات وعمليات إعادة البناء الداخلية
- معايير C++: تم إعادة طرح التغيير الذي يستخدم
std::string_viewلأسماء الملفات فيLogMessageوأحداث التتبُّع، ما يؤدي إلى تحسين التوافق مع بنى تسجيل Rust التي لا تضمن سلاسل تنتهي بقيمة فارغة (crrev.com/c/6387020، إعادة طرح 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، Bug: 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). تم وضع علامةconstexprعلى قيمة الإرجاعstd::to_arrayلتحسين الأمان والتقييم في وقت الترجمة البرمجية (crrev.com/c/6298909).
ChromeDriver 134
الميزات الجديدة
- إجراءات الحدّ من التتبّع الارتدادي (DIPS): إعادة توفير دعم ChromeDriver لإجراءات الحدّ من التتبّع الارتدادي، وذلك باستخدام الأمر
RunBounceTrackingMitigations. تمت إعادة هيكلة اختبار التكامل لاستخدام صفحات مميزة، ما يضمن تسجيل الارتدادات التي تتضمّن حالة بشكلٍ صحيح قبل تنفيذ الأمر. تتوافق هذه الميزة مع مواصفاتnav-tracking-mitigationsوتم تنفيذها في//chrome(crrev.com/c/4935955، الخطأ: 1474656). (ملاحظة: تمت إضافة هذا الخيار في الأصل في crrev.com/c/4873672 ثم تم التراجع عنه لاحقًا). - BiDi: تم تعديل ChromeDriver لاستخدام خصائص إضافة WebDriver BiDi العادية مع البادئة
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/Navigation: تم إصلاح مشكلة كانت تؤدي إلى عدم إرفاق أي صفحة نشطة بعلامة تبويب بشكل مؤقت أثناء تفعيل MPArch، ما كان يؤدي إلى رصد ChromeDriver لها بشكل خاطئ على أنّها حالة خطأ. ينتظر ChromeDriver الآن إلى أن تكتسب علامة التبويب صفحة جديدة وتكمل عملية التنقّل قبل تحديد الحالة (crrev.com/c/6177606).
- معالجة السجلّ: تم إصلاح عُطل (
DCHECKفيbase::Value()) ناتج عن اقتطاع غير سليم لسلاسل السجلّ التي تحتوي على أحرف متعددة البايتات. تم تعديل المنطق لاستخدام ميزة رصد حدودUnicodeStringبدلاً من عمليات التحقّق البسيطة من طولstd::string، ما يضمن استخدام نقاط رمز صالحة (crrev.com/c/6210809، الخطأ: 367752739). - الاختبار: نقلنا معظم اختبارات WPT المرتبطة بالعرض المُسبَق (باستثناء بعض الاختبارات التي تتضمّن مشاكل معروفة في واجهة برمجة التطبيقات) من
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 وBug: 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). تم إصلاح مشكلة تراجع حيث تم تضمين صفحات عناوين URLchrome-extension://بشكل غير صحيح كأهداف للإضافات، وتمت إعادة التحديد إلى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، الخطأ: 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، Bug: 42323825). - الاختبار: تم التراجع عن إزالة علامة الميزة
FedCmIdpSigninStatus، لأنّ إزالتها تسبّبت في حدوث أعطال (crrev.com/c/6082405، والتراجع عن crrev.com/c/6078693، والخطأ: 384866916، والخطأ: 381211734). - الأدوات: تمت إضافة دعم الأمر
Printفي النص البرمجيlog_replay(crrev.com/c/6010809، الخطأ: 378451938).
التغييرات وعمليات إعادة البناء الداخلية
- معايير C++: تمت إزالة
Mojo.InvalidUTF8Stringhistogram، ما أتاح إزالة عناوين 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 لتحديد موقع برنامج تضمين 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 لكي لا يتم تضمين جميع الاستثناءات بشكل إجباري في خاصية "الرمز" ضمن "خطأ JavaScript" عام. يضمن ذلك نقل الأخطاء العادية، مثل "مرجع عنصر قديم" (من
call_function.js) و "حالة عنصر غير صالحة" (من دالة Selenium AtomsCLEAR)، بدقة إلى المستخدم (crrev.com/c/5937893، الخطأ: 42323409). تم تحسين التعامل مع الأخطاء فيGetElementTagNameلتفسير المعلومات غير المتوفّرة عن اسم العلامة بشكلٍ صحيح على أنّها "الكائن ليس عنصرًا" (crrev.com/c/5929087). - BiDi: تم إصلاح مشكلة تعذُّر بدء جلسات BiDi عند استخدام ملف شخصي مخصّص للمستخدم. قد تمنع الصفحة التي تم تحميلها في الملف الشخصي المخصّص بدء BiDiMapper. يضمن ChromeDriver الآن تحميل علامة التبويب الأولى دائمًا
data:,لتوفير مساحة نظيفة لأداة الربط (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واختبارات لقطات الشاشة للعناصر). نقلنا مؤقتًا اختباراتcss/css-scrollbars/WPT غير المستقرة من وضع "بدون واجهة مستخدم" إلى وضع "واجهة المستخدم" (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لتضمين آخر إصلاحات المصدر وتعديلات البروتوكول (crrev.com/c/5953339 وcrrev.com/c/5865478 وBug: 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، Bug: 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إلى الإصدار 0.8.0، وتمّ تضمين آخر تحديثات البروتوكول وإصلاحات الأخطاء (crrev.com/c/5899240 وcrrev.com/c/5865478 وBug: 4226). - الوصول إلى نموذج المستند (DOM): تمت إضافة دعم لجذور الظل المغلقة في الأمر
GetElementShadowRoot. في السابق، كان هذا الأمر يعرض الخطأNoSuchShadowRootعند محاولة الوصول إلى جذر ظل مغلق (crrev.com/c/5923865، الخطأ: 372834222). - الوصول إلى نموذج المستند: تم توفير إمكانية استخدام معرّفات النوافذ والإطارات، ما يسمح بعرض مراجع للنوافذ أو الإطارات (بما في ذلك إطارات iframe خارج العملية) من النصوص البرمجية التي تم تنفيذها لإلغاء المراجع بشكل أكبر (crrev.com/c/5890437 وcrrev.com/c/5923555 والخطأ: 366272556 والخطأ: 40229283).
- WebAuthn: تم توسيع نطاق واجهة برمجة التطبيقات الخاصة بأتمتة 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 وBug: 369952985). - البنية الأساسية: تم إعداد Fuchsia لاستخدام ChromeDriver للتحكّم في
web-engine(crrev.com/c/5867896، الخطأ: 40935291). - الاختبار: تم نقل اختبار WebAuthn لإطارات محددة من مشغّل shell القديم للمحتوى إلى Chrome بلا رأس باستخدام ChromeDriver، لأنّ المشغّل القديم سيتوقف قريبًا عن توفير واجهة برمجة التطبيقات WebAuthn testdriver (crrev.com/c/5920770، الخطأ: 372169469).
ChromeDriver 130
الميزات الجديدة
- BiDi: تم تعديل تبعية BiDi Mapper، وتم استرجاع آخر تحديثات البروتوكول وإصلاحات الأخطاء من المصدر
chromium-bidi(crrev.com/c/5850570، وإعادة نشر crrev.com/c/5837065 بعد التراجع عن crrev.com/c/5840080؛ crrev.com/c/5717956، الخطأ: 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++: تم حلّ مشاكل "قاعدة الخمسة" في فئات مختلفة. بما أنّ إضافة Chrome style تصرّ على استخدام برامج تدمير خارج السطر بدون فرض استخدام برامج إنشاء نقل خارج السطر أيضًا، كان المترجم يحذف بشكل ضمني عوامل تشغيل النقل ويعود تلقائيًا إلى النسخ. تمت إضافة هذه التعريفات الناقصة (crrev.com/c/5846757، الخطأ: 364788123).
- الاختبار: تم تنظيف ملخّص نتائج الاختبار
wptrunnerمن خلال استبدال السلسلةchromeالمرمّزة بثبات بالمنتج الفعلي المستخدَم وإخفاء العنصرcommandالمطوّل من ناتج الملخّص (crrev.com/c/5825633، الخطأ: 41494889). - الاختبار: تم إصلاح حالات تعذُّر الاختبارات الكبيرة في اختبارات تكامل ChromeDriver على نظام التشغيل macOS 15 (Mac15) من خلال مضاعفة مهلات معيّنة، لأنّ الاختبارات على نظام التشغيل هذا استغرقت وقتًا أطول بكثير من نظام التشغيل Mac14. تمت أيضًا إضافة أربعة اختبارات لمستشعر افتراضي إلى قائمة التجاهل بسبب عدم الثبات (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) بسبب العديد من المشاكل في البنية الأساسية. قد تتم إعادة إضافتها لاحقًا في عملية الدمج المستمر مع التحديث التلقائي (crrev.com/c/5812142، الخطأ: 357737793).
ChromeDriver 129
الميزات الجديدة
- BiDi: تم تعديل أداة مساعدة تهيئة جلسة ChromeDriver لإرسال الأمر
session.newإلى BiDi Mapper، ما يسمح للأداة بمعالجة الإمكانات مباشرةً. هذه هي الخطوة الأولى نحو إزالةMapperOptions(crrev.com/c/5741432، الخطأ: 356371297). (ملاحظة: تم التراجع عن تغيير ذي صلة crrev.com/c/5754093 يوفّرunhandledPromptBehaviorتمت معالجته crrev.com/c/5755744 بسبب انخفاض في تغطية الاختبار). - Compute Pressure: تمت إضافة أوامر إضافية جديدة لإدارة مصدر الضغط الافتراضي، وتنفيذ قسم "التشغيل الآلي" من مواصفات Compute Pressure. يتم تحليل هذه الأوامر وإعادة توجيهها إلى طبقة CDP (crrev.com/c/5666583، الخطأ: 347031400).
- الإضافات MV2: تم تعديل الاختبارات التي تستخدم سلوك MV2 لاستخدام
ScopedTestMV2Enablerكجزء من التجربة الميدانية المستمرة لإيقاف الإصدار Extension Manifest V2 نهائيًا (crrev.com/c/5685054، الخلل: 339061151).
إصلاح الأخطاء
- التسلسل الكلاسيكي: تتبُّع العناصر التي تم عرضها عند نشر
Setعلى نحو متسلسِل في نتائج تنفيذ النصوص البرمجية في WebDriver Classic، ما يمنع حدوث حلقات لا نهائية ويسمح بتجاهل عمليات إلغاءArray.prototype.includes(crrev.com/c/5765833، الخلل: 357472850). (ملاحظة: تم التراجع عن هذا التغيير لاحقًا crrev.com/c/5773175 بسبب تراجع في أداء WPT).
التغييرات وعمليات إعادة البناء الداخلية
- BiDi: تم تعديل تبعية BiDi Mapper لتضمين آخر إصلاحات الأخطاء وتعديلات البروتوكول من
chromium-bidi(crrev.com/c/5756587 وcrrev.com/c/5717956 وBug: 4226). - أمان الذاكرة (spanification): تم استبدال استخدام المخزن المؤقت غير الآمن في
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، Bug: 40285824)، وتم تحويل وحدات ماكروUNSAFE_BUFFERS()غير المتوافقة إلىUNSAFE_TODO()(crrev.com/c/5786346). إعادة كتابة حقولbase::spanإلىbase::raw_span(crrev.com/c/5515096، الخطأ: 332587642) - معايير C++: تم إيقاف استخدام مصفوفات متغيرة الطول (VLA) الخطيرة في قاعدة الرموز من خلال وضع علامة
constexprبشكل صريح على أطوال المصفوفات (crrev.com/c/5738737، الخطأ: 349656479). تم تضمين عناوين<unordered_map>الضرورية التي تم جلبها بشكل غير مباشر سابقًا (crrev.com/c/5792881). - البنية: تم إلغاء تفرّع عملية تنفيذ
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 وBug: 42323841). - بدء التشغيل: تمت إضافة وسيطة سطر الأوامر
--ignore-explicit-portإلى ChromeDriver. يفرض هذا الحلّ المؤقت على ChromeDriver تجاهل أي منفذ تم توفيره بشكل صريح، والبحث بدلاً من ذلك عن منفذ مجاني وربطه، ما يؤدي إلى حلّ مشكلة تداخل منافذ TCP أثناء تنفيذ اختبار منصة الويب (من المفترض إزالة هذا الحلّ بعد الإصدار 132) (crrev.com/c/5724574 وcrrev.com/c/5703976 وBug: 42323836).
إصلاح الأخطاء
- أجهزة الاستشعار: تم إصلاح الأمر
ExecuteUpdateVirtualSensorلاستخدامSendCommand()بدلاً منSendCommandAndGetResult()، لأنّ الأمرsetSensorOverrideReadingsCDP لا يعرض قيمة (crrev.com/c/5703589). - FedCM: تم إصلاح مشكلة تداخل في اختبارات FedCM ChromeDriver من خلال التوقف عن التأكيد على أنّه يتم عرض
NoSuchDialogعندما يكون من المتوقع ظهور مربّع حوار، ما يمنع حدوث حالات فشل إذا ظهر مربّع الحوار بسرعة كبيرة (crrev.com/c/5713515، الخطأ: 346530330). - الاختبار: أعدنا تفعيل اختبارات المصادقة الافتراضية WebAuthn على أجهزة Mac بعد إصلاح المشكلة الأساسية (crbug.com/40233722) (crrev.com/c/5635806، الخطأ: 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). - تمت إضافة نطاق إلى طرق
DecodeفيWebSocketFrameParserلتحسين أمان الذاكرة (crrev.com/c/5722108، الخطأ: 354307327). - تمت إزالة بقايا
absl::optionalمن خلال إزالة عناوين Abseil القديمة، والانتقال إلىstd::optional(crrev.com/c/5691505، الخطأ: 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، الخطأ: 350916212).
ChromeDriver 127
إصلاح الأخطاء
- الثبات: تم إصلاح عُطل في ChromeDriver حدث عند تلقّي الأمر
target.detachFromTarget(أو الحدثtarget.detachedFromTarget) أثناء معالجة عميل "أدوات مطوّري البرامج" بنشاط لأوامر أخرى، ما أدّى إلى منع الإصدار المبكر للكائنينWebViewوDevToolsClient(crrev.com/c/5527584، الخطأ: 339773537). - الثبات: تم إصلاح مشكلة كان يمكن أن يتسبب فيها الأمر
Switch To Windowفي عرض رسالة "خطأ غير معروف" بشكلٍ غير صحيح إذا تم فصل عرض الويب أثناء تنفيذ الأمر. يتجاهل الأمر الآن الخطأ الداخلي "تعذّر العثور على عرض الويب" بشكلٍ صحيح، ما يؤدي إلى ظهور الردّ العادي "لا توجد نافذة بهذا الاسم" إذا تم إغلاق النافذة المستهدَفة بالفعل (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: تم إصلاح الخطأ في اختبار
fedcm-loginhint.https.htmlWPT الذي تم فيه وضع علامة "مغلق" بشكل غير صحيح على مربّع حوار. يتم الآن تعديل الحالة فقط إذا نجحت عمليةselectAccountفعلاً (crrev.com/c/5398379، الخطأ: 331237776). - الاختبار: تم إصلاح
DCHECKعطلkExtendedASCIIStartأثناء تحليل JSON عندما وصل أحد الأحرف إلى الحدّ بالضبط (crrev.com/c/5565276، الخلل: 40284755). - الاختبار: تم إصلاح اختبار
scrollend-event-fires-to-iframe-window.htmlWPT من خلال استخدام عنصر إطار 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 ثنائية الاتجاه لتراعي آخر التعديلات على أداة Mapper (crrev.com/c/5615110 وBug: 4226 وBug: 324436866).
- تمت إضافة اختبارات الوحدات لـ
WebView::SendBidiCommandوBidiTrackerلزيادة نسبة استخدام رموز الصفحة (crrev.com/c/5588400، خلل: 341048786، خلل: 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). - كلاسيكي: تم تنفيذ ميزة القبول التلقائي لأي مربّعات حوار
beforeunload(تنبيهات)، مع الالتزام بمعيار WebDriver الذي ينص على أنّه يجب عدم عرضها مطلقًا في جلسة "كلاسيكي" (crrev.com/c/5517510، الخطأ: 4757).
إصلاح الأخطاء
- الوضع الكلاسيكي: تمت إزالة الحدّ الأقصى المكرّر لعدد المحاولات في منطق استرداد العنصر. أصبح الاسترجاع الآن محصورًا بمهلة الانتظار الضمنية فقط، ما يمنع حدوث سيناريوهات قد تفشل فيها العملية قبل الأوان وتعرض بشكل غير صحيح الخطأ
NoSuchExecutionContextغير العادي (crrev.com/c/5478668، Bug: 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: تم تعديل تبعية BiDi Mapper، ما أتاح إضافة أحدث الميزات وإصلاح الأخطاء من مشروع
chromium-bidi(crrev.com/c/5490428 وcrrev.com/c/5471839 وcrrev.com/c/5509316 وcrrev.com/c/5458234 وBug: 4226). (ملاحظة: تمّت إعادة تغيير بسيط في أداة الربط مؤقتًا من قِبل أحد المسؤولين، ثمّ تمّت إعادة التغيير (crrev.com/c/5374839 وcrrev.com/c/5374366)). - تم استبدال استخدامات
base::StringPieceبـstd::string_viewفي//chrome(crrev.com/c/5467746، الخطأ: 40506050). - تمت إزالة استخدام
std::to_string()في//chromeواستبداله بـbase::NumberToString()أوbase::FormatNumber()(crrev.com/c/5505593، الخطأ: 335672557). - تمت إزالة إمكانية استخدام الخيار
--remote-debugging-addressفي وضع "Chrome بلا واجهة مستخدم رسومية" القديم، لأنّ الوصول عن بُعد غير المحمي إلى "بروتوكول أدوات مطوّري البرامج في Chrome" كان يُعتبر خطيرًا جدًا (crrev.com/c/5512634، الخلل: 327558594). - تمت إزالة قواعد إنشاء Fuchsia من
//chrome، باستثناء ChromeDriver (crrev.com/c/5473870، الخطأ: 41481724). - تم نقل مراجع
TODO(crbug.com/...)القديمة في جميع أنحاء قاعدة الرموز إلى تنسيق المعرّف الجديد لأداة تتبُّع المشاكل (TODO(b/...)) (crrev.com/c/5492605 وcrrev.com/c/5486477 وcrrev.com/c/5461380 وBug: 321899722). - تم إيقاف اختبارات WebAuthn (أداة المصادقة) على أجهزة Mac (لكل من الوضع بلا واجهة مستخدم رسومية و
chromedriver_py_tests) بسبب خطأ أساسي معقّد، ما أدّى إلى إتاحة ترقية برامج التتبّع إلى الإصدار 14 من نظام التشغيل macOS (crrev.com/c/5525435 وcrrev.com/c/5518820 وBug: 329130177). - تم إيقاف أدوات إنشاء WPT للإصدار
content_shellبسبب صعوبات في تشغيل WPT باستخدام ChromeDriver وContent Shell معًا (crrev.com/c/5512439، الخطأ: 40214293). - تمت إعادة نشر تغيير يعدّل
focus-navigationWPTs لاستخدامShift+Tabمن خلالtest_driver.action_sequence()للتنقّل للخلف. تم إصلاح خطأ فيfocus-utils.jsحيث تم استخدام رمز المفتاح الخاطئ (E050بدلاً منE008) لمفتاح Shift (crrev.com/c/5467843، وتمت إعادة crrev.com/c/5466531، وإعادة crrev.com/c/5463903، الخطأ: 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 في نقطة نهاية تأكيد الهوية بعد أن أصبحت موفّرات الهوية جاهزة (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.htmlWPT من خلال الجمع بين تسلسلات الإجراءات واستخدام مستند الإطار الرئيسي كمصدر لإجراءpointerUp، ما يمنع ChromeDriver من إرسال أحداثpointerUpمتزامنة بشكل غير صحيح عبر الإطارات (crrev.com/c/5402096، الخطأ: 325981758). - الاختبار: تم إصلاح
wptrunnerلإعادة توجيه ناتجstderrبشكلٍ صحيح (بما في ذلك سجلّات المتصفّح التي تتم كتابتها عند استخدام--enable-chrome-logs) إلى عنصرstderrبدلاً منcrash_log، وتم نقل أخطاء أداة الاختبار (التي تحتوي على تتبُّع تسلسل استدعاء الدوال البرمجية في المتصفّح) إلىcrash_log(crrev.com/c/5437023، الخطأ: 41494889). - الاختبار: تم إصلاح
wptrunnerلتوجيه سجلّات المتصفّح إلى عنصر الاختبار الصحيح من خلال تجميع النتائج حسب عملية ChromeDriver، ما يمنع السجلّات المتداخلة وغير المرتبطة أثناء تنفيذ الاختبارات المتوازية (crrev.com/c/5320681، الخطأ: 41494889).
التغييرات وعمليات إعادة البناء الداخلية
- BiDi: تمّت ترقية تبعية 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، الخطأ: 41494889). - التبعيات: تمت إزالة
Closureمن قائمة التبعياتselenium-atoms، وبالتالي تمت إزالتها من إشعارات الجهات الخارجية في ChromeDriver (crrev.com/c/5424804، خلل: 4226). - التبعيات: تمت إزالة التبعيات غير المستخدَمة في
dynamic_annotationsمن المستودع الأساسي (crrev.com/c/3398908، الخطأ: 1282422). - التنسيق: تم تطبيق إعداد
clang-formatالجديد على عناوين Windows التي تتضمّن مشاكل (crrev.com/c/5367127، الخطأ: 329138753).
ChromeDriver 124
الميزات الجديدة
- BiDi: تمت إضافة خطوة إنشاء لتصغير النص البرمجي
BiDiMapperقبل تضمينه في ChromeDriver، لأنّه يتم الآن تنزيل أداة ربط المصدر بدون تصغير من 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، Bug: 40945430). - الاختبار: تمت إضافة دعم لخيار سطر الأوامر
--failfastإلى اختبارات تكامل ChromeDriver Python، ما يؤدي إلى إيقاف تشغيل الاختبار عند حدوث الخطأ الأول للمساعدة في تصحيح الأخطاء (crrev.com/c/5374546). - الاختبار: تمت إضافة إمكانية استخدام content-shell مع الأمر
SetRPHRegistrationModeفي برنامج تشغيل الويب من خلال واجهات برمجة التطبيقاتtestdriver-vendor.js(crrev.com/c/5205730، الخطأ: 1359103).
إصلاح الأخطاء
- الثبات: تم نقل عملية التحقّق من انتهاء مهلة الوقت إلى داخل نص حلقة الاستطلاع والانتظار في
ChromeImpl::SetWindowBounds. يحلّ هذا التغيير مشكلة انتهاء المهلة قبل حدوث التكرار الأول للحلقة في حال ارتفاع الحمل (crrev.com/c/5366899، الخطأ: 4642). - الأداء: تم تقليل وقت الانتظار في
ChromeImpl::SetWindowBoundsمن خلال تطبيق فترة انتظار التراجع الأسي فقط إذا لم تصل حدود النافذة بعد إلى الحالة المطلوبة، ما يؤدي إلى تقليل وقت استجابة إعداد WPT (crrev.com/c/5366457، الخطأ: 4642). - بدء التشغيل: تم تعديل ChromeDriver لاستخدام
--user-data-dirبدلاً من--data-pathعند تحديد دليل البيانات الخاص بـcontent_shell، بما يتوافق مع طريقة قراءة منفذ "أدوات مطوّلي البرامج" النشط (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). - تمت إعادة صياغة
WriteBigEndian()لاستخدام عمليات تحويلbase::numericsبايت أوBigEndianWriter(التي تقبل الآنbase::span)، ما يؤدي إلى تحسين الأمان عند كتابة بايتات big-endian (crrev.com/c/5202348، الخطأ: 1490484). - تم التبديل إلى استخدام ChromeDriver لتشغيل اختبارات Web Platform Tests (WPT) مع
content_shell(باستثناء الاختبارات الافتراضية واختبارات reftests في انتظار إصلاح الأخطاء في المصدر) (crrev.com/c/5347371، الخطأ: 40214293). - تم تحويل جميع اختبارات الويب الحالية الخاصة بأداة Generic Sensor إلى استخدام
test_driver.jsوأجهزة الاستشعار الافتراضية بدلاً من عمليات المحاكاة JS/Mojo، بما يتوافق مع قسم التشغيل الآلي الجديد من مواصفات Generic Sensor (crrev.com/c/4770867، الخطأ: 1278377، الخطأ: 1471996). - تحسين عملية إنشاء التراخيص من خلال إضافة
append_notices.pyلإنشاء إشعارات الأذونات الخاصة بـBiDiMapperمن التبعيات وتعديل استدعاءlicenses.pyللاعتماد بشكل صارم على ملفselenium-atomsREADME للحصول على إشعارات الجهات الخارجية (crrev.com/c/5350601 وcrrev.com/c/5339957 وBug: 4729 وBug: 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.htmlMIDI لكي لا يتم إنشاء العمليات غير المكتملة بدون داعٍ، ما يؤدي إلى تجنُّب رفض العمليات غير المكتملة بدون معالجة والذي تسبّب في تعذُّر اجتياز الاختبار في 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: تم تعديل تبعية BiDi Mapper، ما أدّى إلى جلب آخر الإصلاحات والميزات (crrev.com/c/5205452 وcrrev.com/c/5255321 وcrrev.com/c/5238148 وcrrev.com/c/5237125 وBug: 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 وBug: 1486214). - تم تعديل جميع توجيهات
#includeفيbase/...لاستخدام""بدلاً من<>من أجل الاتساق (crrev.com/c/5237376، خلل: 1500249). - تم نقل جميع ملفات
DIR_METADATAفيchrome/test/إلى Buganizer (crrev.com/c/5284119، الخطأ: 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()ذات الوسيطتَين للسماح للمترجم باستنتاج الحجم الصحيح، ما يؤدي إلى تبسيط الرمز (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إلى حدوث خطأ "no such window" إذا تم إغلاق هدف تم إنشاؤه حديثًا (على سبيل المثال، في حالة تزامن) قبل أن يتمكّن ChromeDriver من ربطه (crrev.com/c/5147409، الخطأ: 1506833). - FedCM: تمت إضافة أداة معالجة أحداث داخلية لإرسال إشعار عند إغلاق مربّع حوار 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()للتمييز بينها وبينStringPrintf()عندما لا تكون سلاسل التنسيق ثوابت وقت الترجمة (crrev.com/c/4950568، الخطأ: 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 وBug: 4615 وBug: 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). - تمت إعادة استخدام أمر
ConfirmIdpLoginFedCM webdriver ليصبح أمرClickDialogButtonأكثر قابلية للتوسيع ويقبل المَعلمةDialogButton(crrev.com/c/5003255، الخطأ: 1499341). - تم تعديل الاعتمادية
crossbenchمن خلال العديد من الإصلاحات والميزات، بما في ذلك تحليل أفضل لأنواع برامج التشغيل، ورموز الشبكة البديلة، وتوافقها مع نظام التشغيل 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.statusPureBiDi، ما يتيح للمستخدمين إنشاء اتصال WebSocket غير مرتبط بأي جلسة واسترداد حالة الجلسة (crrev.com/c/4938596، الخطأ: 4496). (Relanded after a previous revert in crrev.com/c/4922097) - BiDi: تم تعديل تبعية BiDi Mapper لتتوافق مع عملية Mapper الجديدة والمبسّطة (crrev.com/c/4952609، الخلل: 4226).
- أجهزة الاستشعار: تم تنفيذ أوامر أجهزة الاستشعار الافتراضية في
browser_protocol.pdlوطبقة CDP (نطاق المحاكاة)، مع إضافة دعم لقسم التشغيل الآلي من مواصفات Generic Sensor (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). (Relanded after a previous revert in 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++: تم إصلاح السلوك غير المحدّد الذي رصده UBSan عند تحويل قيمة مزدوجة خارج النطاق إلى عدد صحيح من خلال إضافة عمليات التحقّق من النطاق (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لتجنُّب النسخ غير الضرورية للسلاسل وعمليات التخصيص ذات الطول الصفري (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: تم تعديل تبعية BiDi Mapper إلى الإصدار 0.4.27، ما يتيح الاستفادة من أحدث الإصلاحات والميزات (crrev.com/c/4862031 وcrrev.com/c/4890322).
- تم استبدال واجهات برمجة تطبيقات متعددة للمؤشر/الطول في
//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، ما يوفّر واجهة مستخدم أفضل لعرض النتائج (crrev.com/c/4873223). - تم إصلاح عملية دمج "أدوات مطوّري البرامج" مع WebView من خلال وضع علامة على WebContents في WebView وتحديد نوع "أدوات مطوّري البرامج" على أنّه
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، ما يتيح اختبار فئات معيّنة مقابل عدد الزيارات الفعلي لبروتوكول Chrome للتصحيح، وسدّ الفجوة بين اختبارات الوحدات واختبارات تكامل Python (crrev.com/c/4707855، الخطأ: 4528).
- Crossbench: تم تعديل
crossbenchالاعتمادية من خلال العديد من التحسينات، بما في ذلك قصص جديدة حول مقياس الأداء المتعلق بالطاقة، وتحسين التوافق مع الأنظمة الأساسية والأجهزة، وتحسين تصحيح الأخطاء، وإجراء إصلاحات مختلفة (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وتنفيذ عملية التحقّق من التركيز على مستوى المتصفّح للإطارات المحصورة (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
الميزات الجديدة
- الاتصال عبر الأنابيب: تم تغيير وضع الاتصال التلقائي بين ChromeDriver وChrome من WebSockets إلى الأنابيب (
--remote-debugging-in-pipeو--remote-debugging-out-pipe) على جميع الأنظمة الأساسية المتوافقة، بما في ذلك Windows (crrev.com/c/4634299 وcrrev.com/c/4628834 وcrrev.com/c/4635378 والخطأ: 3480). - BiDi: تم تعديل تبعية BiDi Mapper (crrev.com/c/4670516، الخطأ: 4226).
إصلاح الأخطاء
- الثبات: تم إصلاح خطأ في الوصول إلى مؤشر فارغ تسبّب في تعطُّل ChromeDriver، ما أدّى بدوره إلى حدوث أخطاء
ConnectionRefusedأثناء عمليات الاختبار (crrev.com/c/4675633، الخلل: 1457101). - التنقّل: تم إصلاح مشكلة عدم التعامل بشكل موحّد مع الخطأين
NoSuchExecutionContextوNoSuchWindowفي Chrome أثناء التنقّل، وتم الآن ربطهما بشكل صحيح لإعادة محاولة العملية (crrev.com/c/4667156، الخطأ: 4459). - محاكاة الأجهزة الجوّالة: تم تصحيح منطق الاستنتاج الخاص بـ
clientHints.mobile، ويتم الآن استنتاجه بشكل صحيح منuserAgentعلى Android، ويتم ضبط القيمة التلقائية على "خطأ" على المنصات الأخرى، ما يؤدي إلى حلّ مشكلة كانت فيها الأجهزة اللوحية تُصنّف بشكل غير صحيح على أنّها أجهزة جوّالة (crrev.com/c/4649348، الخطأ: 4243). - إنشاء الجلسة: تم تعديل عملية إنشاء الجلسة لعرض رمز الخطأ العادي
SessionNotCreatedبشكل صحيح عند حدوث خطأ، وذلك بما يتوافق تمامًا مع مواصفات W3C WebDriver (crrev.com/c/4638223، الخطأ: 4379). ملاحظة: تم التراجع عن هذا التغيير لاحقًا لأنّ بعض مسارات الرموز البرمجية المحدّدة تتطلّب رموز خطأ مختلفة (crrev.com/c/4651188).
التغييرات وعمليات إعادة البناء الداخلية
- تم إلغاء النصوص البرمجية لعملية إصدار ChromeDriver اليدوية، لأنّ ChromeDriver مدمج الآن بالكامل في عملية إصدار Chrome ومتاح من خلال البنية الأساسية لبرنامج Chrome for Testing (crrev.com/c/4520687، الخلل: 4142).
- تم نقل البنية الأساسية لاختبارات WPT (اختبارات المنصة على الويب) لاستخدام أداة
wptrunnerالرسمية بدلاً من أداة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 mapper البرمجية لتعمل بشكل صحيح بغض النظر عن دليل العمل الحالي (crrev.com/c/4670550).
- تم تحويل ملفات
/chrome/test/chromedriverلاستخدام ARC (العد التلقائي للمراجع) في إصدارات 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: تم تعديل الاعتمادية BiDi Mapper وتحديث النص البرمجي للإنشاء لسحب أحدث مراجعة من "الفرع الرئيسي" تلقائيًا (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 mapper (crrev.com/c/4614518).
ChromeDriver 115
الميزات الجديدة
- محاكاة الأجهزة الجوّالة: تم توفير إمكانية استخدام حقول معلومات الوكيل المستخدم في محاكاة الأجهزة الجوّالة، ما يتيح لـ ChromeDriver تحليل تلميحات العميل من الإمكانات والإعدادات المُسبقة وتمريرها إلى Chrome (crrev.com/c/4498667 وcrrev.com/c/4466129 والخطأ: 4243).
- محاكاة الأجهزة الجوّالة: عدّلنا الإعدادات المُسبقة لمحاكاة الأجهزة الجوّالة لاستخدام رقم الإصدار الرئيسي من المتصفّح المضيف بدلاً من إصدار ChromeDriver عند استبدال سلسلة التنسيق
%sفي وكيل المستخدم (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تتضمّن "الجهاز الجوّال" (crrev.com/c/4507142، الخطأ: 4243). - محاكاة الأجهزة الجوّالة: تم نقل عمليات الإلغاء
DeviceMetricsلاستخدام أمرEmulation.setDeviceMetricsOverrideفي "بروتوكول تصحيح الأخطاء في Chrome" بدلاً من النطاق المكافئ المتوقّف نهائيًاPage(crrev.com/c/4502614، الخطأ: 4243).
التغييرات وعمليات إعادة البناء الداخلية
- BiDi: تم تعديل اعتمادية 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). - تم تغيير منطق تحميل ملف seed لاستخدام مسارات مطلقة لضمان الاتساق عند تشغيل البرامج النصية و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).
إصلاح الأخطاء
- بلا واجهة مستخدم رسومية: تم إصلاح تعطُّل في وضع "بلا واجهة مستخدم رسومية" الجديد من خلال تجاهل طلبات معاينة الطباعة المكتوبة (مثل
window.print()) بدون تنبيه، ما يتيح توافق السلوك مع وضع "بلا واجهة مستخدم رسومية" القديم (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).
- تمت معالجة تحذيرات متعدّدة بشأن المؤشرات المعلقة أثناء تنفيذ اختبار الوحدة من خلال إدارة المراجع غير المملوكة وعمليات الإتلاف المحلية بشكل سليم في اختبارات
WebViewImplواختبارات أداة تسجيل الأداء (crrev.com/c/4374824 وcrrev.com/c/4368179). - تم نقل قاعدة الرموز البرمجية لاستخدام واجهة برمجة التطبيقات الجديدة
base::Valueالإصدار 2، ما أدّى إلى استبدال الطرق المتوقّفة نهائيًا، مثل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). - أجرينا عمليات تنظيف متنوّعة للرموز البرمجية، بما في ذلك تقصير الرموز البرمجية، واستخدام عمليات أحادية لـ
expected، وإزالة الرموز البرمجية غير المستخدَمة، وإصلاح مخالفات الأسلوب (crrev.com/c/4475368 وcrrev.com/c/4464199). - تم تعديل الاختبارات التي تتضمّن إطارات محصّنة لاستخدام السمة
configبدلاً من السمةsrcالمتوقّفة نهائيًا (crrev.com/c/4382231). - تمت إزالة استخدام
ShadowDOMV0غير الفعّال (crrev.com/c/4388302). - تم التراجع عن إضافة علامة لإصلاح ملف PDF في Skia (
SK_IGNORE_PDF_EOF_NEWLINE_FIX) للسماح بإعادة تحديد خط الأساس (crrev.com/c/4401451). - تم تعديل مالك نص اختبار ChromeDriver وإجراء تعديلات لإنشاء ملف JSON الخاص بالإعدادات حصريًا لأداة Pinpoint (crrev.com/c/4437492 وcrrev.com/c/4298554).
- تمت إضافة عبارة include (
<cstring>) غير مضمّنة إلىstd::strlenفيweb_view_impl.ccلإصلاح مشكلة في إنشاء IWYU (crrev.com/c/4376772). - تمت إزالة ملف اختبار غير مستخدَم (
orientation_test.html) (crrev.com/c/4335668).
ChromeDriver 113.0.5672.63
متوافق مع الإصدار 113 من Chrome
- تم حلّ المشكلة 4205: أرقام تعريف الكائنات نفسها في Classic وBiDi [Pri-1]
- تم حلّ المشكلة 4302: عدم افتراض أنّ Mapper في علامة التبويب الأولى في ExecuteGetWindowHandles [Pri-1]
- تم حلّ المشكلة 4356: عدم استخدام Chrome 110 لقيمة الإعداد المفضّل "download.default_directory" [Pri-1]
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 113.0.5672.24
متوافق مع الإصدار 113 من Chrome
- تم حلّ المشكلة 4205: أرقام تعريف الكائنات نفسها في Classic وBiDi [Pri-1]
- تم حلّ المشكلة 4302: عدم افتراض أنّ Mapper في علامة التبويب الأولى في ExecuteGetWindowHandles [Pri-1]
- تم حلّ المشكلة 4356: عدم استخدام Chrome 110 لقيمة الإعداد المفضّل "download.default_directory" [Pri-1]
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 112.0.5615.49
متوافق مع الإصدار 112 من Chrome
- تم حلّ المشكلة 3517: تفعيل ميزة الطباعة في الوضع غير المباشر [Pri-]
- تم حلّ المشكلة 4419: زيادة كبيرة في استخدام Speedometer عند استخدام chromedriver [Pri-3]
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 112.0.5615.28
متوافق مع الإصدار 112 من Chrome
- تم حلّ المشكلة 4357: مشكلة في جلسة الإصدار 110.0.5481.77 من Chromedriver عند استخدام الخيارَين --headless و--user-data-dir. [Pri-1]
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 111.0.5563.64
متوافق مع الإصدار 111 من Chrome
- تم حلّ المشكلة 4216: تشغيل ChromeDriver باستخدام BiDiMapper مخصّص [Pri-]
- تم حلّ المشكلة 4300: يمكن استخدام معرّف النافذة بشكل تفاعلي بين الإصدار الكلاسيكي والإصدار ثنائي الاتجاه [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
متوافق مع الإصدار 111 من Chrome
- تم حلّ المشكلة 4357: مشكلة في جلسة ChromeDriver مع الخيارَين --headless و--user-data-dir [Pri-1]
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 111.0.5563.19
متوافق مع الإصدار 111 من Chrome
- تم حلّ المشكلة 4216: تشغيل ChromeDriver باستخدام BiDiMapper مخصّص [Pri-]
- تم حلّ المشكلة 4300: يمكن استخدام معرّف النافذة بشكل تفاعلي بين الإصدار الكلاسيكي والإصدار ثنائي الاتجاه [Pri-]
- تم حلّ المشكلة 4325: يختلف التعامل مع toJSON في jsonSerialize الخاص بملف call_function.js عن المعيار. [Pri-]
- تم حلّ المشكلة 4330: تعذُّر تنفيذ DCHECK في DevToolsClientImpl::AddListener [Pri-]
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 110.0.5481.77
متوافق مع الإصدار 110 من Chrome
- تم حلّ المشكلة 4193: تعذّر بدء جلسة جديدة على نظام التشغيل Android 13 [Pri-]
- تم حلّ المشكلة 4272: يجب أن يتعامل WebSocket مع الرمز=0 كإشارة إلى FIN [Pri-]
- تم حلّ المشكلة 4276: إصلاح مشاكل الاتصال في ChromeDriver [Pri-]
- تم حلّ المشكلة 4295: ChromeDriver مع
"webSocketUrl": trueغير متزامن [Pri-] - تم حلّ المشكلة 4297: لا يتم تسلسل ChromeDriver Bidi بشكل صحيح [Pri-]
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 110.0.5481.30
متوافق مع الإصدار 110 من Chrome
- تم حلّ المشكلة 4193: تعذّر بدء جلسة جديدة على نظام التشغيل Android 13 [Pri-]
- تم حلّ المشكلة 4272: يجب أن يتعامل WebSocket مع الرمز=0 كإشارة إلى FIN [Pri-]
- تم حلّ المشكلة 4276: إصلاح مشاكل الاتصال في ChromeDriver [Pri-]
- تم حلّ المشكلة 4295: ChromeDriver مع
"webSocketUrl": trueغير متزامن [Pri-] - تم حلّ المشكلة 4297: لا يتم تسلسل ChromeDriver Bidi بشكل صحيح [Pri-]
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 109.0.5414.74
متوافق مع الإصدار 109 من Chrome
- تم حلّ المشكلة 4179: يجب أن تتيح جلسة BiDi عمليات ربط متعددة [Pri-]
- المشكلة التي تم حلّها 4203: تحسين معلومات الاعتمادات [Pri-]
- تم حلّ المشكلة 4263: تعطُّل الجهاز عند الضغط على Meta+A [Pri-]
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 109.0.5414.25
متوافق مع الإصدار 109 من Chrome
- تم حلّ المشكلة 4179: يجب أن تتيح جلسة BiDi عمليات ربط متعددة [Pri-]
- المشكلة التي تم حلّها 4203: تحسين معلومات الاعتمادات [Pri-]
- تم حلّ المشكلة 4263: تعذُّر التشغيل عند الضغط على Meta+A [Pri-]
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 108.0.5359.71
يتوافق مع الإصدار 108 من Chrome لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 108.0.5359.22
متوافق مع الإصدار 108 من Chrome
- تم حلّ المشكلة 4204: إصلاح اختبار test_top_level_and_one_child الفاشل في WPT [Pri-]
- تم حلّ المشكلة 4215: إعادة تسمية الإصدار chromedriver_mac64_m1 إلى chromedriver_mac_arm64 [Pri-]
- تم حلّ المشكلة 4221: تعطُّل المتصفّح عند إغلاقه باستخدام أمر النقر [Pri-]
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 107.0.5304.62
متوافق مع الإصدار 107 من Chrome
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 107.0.5304.18
متوافق مع الإصدار 107 من Chrome
- تم حلّ المشكلة 4180: منع أي معالجة لأوامر BiDi إلى أن يتم إعلامك ببدء BiDiMapper [Pri-]
- تم حلّ المشكلة 4198: يجب ألا يفترض ChromeDriver BiDi أنّ BiDiMapper يظهر دائمًا في علامة التبويب الأولى [Pri-]
- تم حلّ المشكلة 4207: خطأ WebDriver عند تشغيل WPT [Pri-1]
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 106.0.5249.61
متوافق مع الإصدار 106 من Chrome
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 106.0.5249.21
متوافق مع الإصدار 106 من Chrome
- تم حلّ المشكلة 4016: إضافة دعم أساسي للغة ثنائية الاتجاه إلى ChromeDriver (استنادًا إلى أداة الربط) [Pri-1]
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 105.0.5195.52
متوافق مع الإصدار 105 من Chrome
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 105.0.5195.19
إصدار Chrome المتوافق
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 104.0.5112.79
متوافق مع الإصدار 104 من Chrome
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 104.0.5112.29
متوافق مع الإصدار 104 من Chrome
- تم حلّ المشكلة 4121: يتعذّر تنفيذ أمر WebDriver أحيانًا بسبب ظهور الخطأ "unexpected command response" [Pri-1]
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 104.0.5112.20
متوافق مع الإصدار 104 من Chrome
- تم حلّ المشكلة 4121: يتعذّر تنفيذ أمر WebDriver أحيانًا بسبب ظهور الخطأ "unexpected command response" [Pri-1]
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 103.0.5060.134
متوافق مع الإصدار 103 من Chrome
- تم حلّ المشكلة 4048: تم فصل إطار الهدف [Pri-]
- تم حلّ المشكلة 4121: يتعذّر تنفيذ أمر WebDriver أحيانًا بسبب ظهور الخطأ "unexpected command response" [Pri-1]
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 103.0.5060.53
متوافق مع الإصدار 103 من Chrome
- تم حلّ المشكلة 4048: تم فصل إطار الهدف [Pri-]
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 103.0.5060.24
متوافق مع الإصدار 103 من Chrome
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 102.0.5005.61
متوافق مع الإصدار 102 من Chrome
- تم حلّ المشكلة 1309282: لا يتيح chromedriver استخدام مفاتيح متعددة القيم [Pri-1]
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 102.0.5005.27
متوافق مع الإصدار 102 من Chrome
- تم حلّ المشكلة 1309282: لا يتيح chromedriver استخدام مفاتيح متعددة القيم [Pri-1]
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 101.0.4951.41
متوافق مع الإصدار 101 من Chrome
- تم حلّ المشكلة 4046: تم تسجيل خطأ DCHECK عند إلحاق إطار مضمّن مستقل فارغ [Pri-]
- تم حلّ المشكلة 4080: يتعذّر التبديل إلى إطار متداخل [Pri-]
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 101.0.4951.15
متوافق مع الإصدار 101 من Chrome
- تم حلّ المشكلة 4046: تم تسجيل خطأ DCHECK عند إلحاق إطار مضمّن مستقل فارغ [Pri-]
- تم حلّ المشكلة 4080: يتعذّر التبديل إلى إطار متداخل [Pri-]
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 100.0.4896.60
متوافق مع الإصدار 100 من Chrome
- تم حلّ المشكلة 4002: إتاحة "الإطارات المحصّنة" [Pri-]
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 100.0.4896.20
متوافق مع الإصدار 100 من Chrome
- تم حلّ المشكلة 4002: إتاحة "الإطارات المحصّنة" [Pri-]
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 99.0.4844.51
متوافق مع الإصدار 99 من Chrome
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 99.0.4844.35
متوافق مع الإصدار 99 من Chrome
- REVERTED!!! تم حلّ المشكلة 2269: يتعذّر استخدام أحرف غير BMP (نقاط الرموز أعلى U+FFFF) [Pri-3]
- تم حلّ المشكلة chromium:1295243: تراجع في sendKeys في ChromeDriver [Pri-1]
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 99.0.4844.17
متوافق مع الإصدار 99 من Chrome
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 98.0.4758.102
متوافق مع الإصدار 98 من Chrome
- تم حلّ المشكلة 3933: النقر على حافة إطار العرض غير فعّال بدون ظهور خطأ [Pri-]
- REVERTED!!! تم حلّ المشكلة 2269: يتعذّر استخدام أحرف غير BMP (نقاط الرموز أعلى U+FFFF) [Pri-3]
- تم حلّ المشكلة chromium:1295243: تراجع في sendKeys في ChromeDriver [Pri-1]
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 98.0.4758.80
متوافق مع الإصدار 98 من Chrome
- تم حلّ المشكلة 3933: النقر على حافة إطار العرض غير فعّال بدون خطأ [Pri-]
- تم حلّ المشكلة 2269: يتعذّر استخدام أحرف غير BMP (نقاط الرموز أعلى U+FFFF) [Pri-3]
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 98.0.4758.48
متوافق مع الإصدار 98 من Chrome
- تم حلّ المشكلة 3933: النقر على حافة إطار العرض غير فعّال بدون خطأ [Pri-]
- تم حلّ المشكلة 2269: يتعذّر استخدام أحرف غير BMP (نقاط الرموز أعلى U+FFFF) [Pri-3]
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 97.0.4692.71
يتوافق مع الإصدار 97 من Chrome
- تم حلّ المشكلة 3878: تحسين التعامل مع إحداثيات العناصر الكسرية للنقر على العناصر [Pri-]
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 97.0.4692.36
يتوافق مع الإصدار 97 من Chrome
- تم حلّ المشكلة 3878: تحسين التعامل مع إحداثيات العناصر الكسرية للنقر على العناصر [Pri-]
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 97.0.4692.20
يتوافق مع الإصدار 97 من Chrome
- تم حلّ المشكلة 3878: تحسين التعامل مع إحداثيات العناصر الكسرية للنقر على العناصر [Pri-]
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 96.0.4664.45
متوافق مع الإصدار 96 من Chrome
- تم حلّ المشكلة 3445: يتعذّر الوصول إلى العناصر في إطار iframe داخل عنصر shadow root [Pri-3]
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 96.0.4664.35
متوافق مع الإصدار 96 من Chrome
- تم حلّ المشكلة 3445: يتعذّر الوصول إلى العناصر في إطار iframe داخل عنصر shadow root [Pri-3]
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 96.0.4664.18
متوافق مع الإصدار 96 من Chrome
- تم حلّ المشكلة 3445: يتعذّر الوصول إلى العناصر في إطار iframe داخل عنصر shadow root [Pri-3]
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 95.0.4638.69
متوافق مع الإصدار 95 من Chrome
- تم حلّ المشكلة 3857: تم تحديد عنوان رأس المضيف أو عنوان رأس المصدر ولم يتم إدراجه في القائمة البيضاء أو المضيف المحلي [Pri-1]
- تمت إضافة وسيطة
--allowed-origins
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 95.0.4638.54
متوافق مع الإصدار 95 من Chrome
- تم حلّ المشكلة 3857: تم تحديد عنوان رأس المضيف أو عنوان رأس المصدر ولم يتم إدراجه في القائمة البيضاء أو المضيف المحلي [Pri-1]
- تمت إضافة وسيطة
--allowed-origins
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 95.0.4638.17
متوافق مع الإصدار 95 من Chrome
- تم حلّ المشكلة 3857: تم تحديد عنوان رأس المضيف أو عنوان رأس المصدر ولم يتم إدراجه في القائمة البيضاء أو المضيف المحلي [Pri-1]
- تمت إضافة وسيطة
--allowed-origins
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 95.0.4638.10
متوافق مع الإصدار 95 من Chrome
- تم حلّ المشكلة 3857: تم تحديد عنوان رأس المضيف أو عنوان رأس المصدر ولم يتم إدراجه في القائمة البيضاء أو المضيف المحلي [Pri-1]
- تمت إضافة وسيطة
--allowed-origins
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 94.0.4606.113
متوافق مع الإصدار 94 من Chrome
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 94.0.4606.61
متوافق مع الإصدار 94 من Chrome
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 94.0.4606.41
متوافق مع الإصدار 94 من Chrome
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 93.0.4577.63
متوافق مع الإصدار 93 من Chrome
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 93.0.4577.15
متوافق مع الإصدار 93 من Chrome
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 92.0.4515.107
متوافق مع الإصدار 92 من Chrome
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 92.0.4515.43
متوافق مع الإصدار 92 من Chrome
- تم حلّ المشكلة 3389: التحقّق من صحة المضيف لطلبات ChromeDriver
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 91.0.4472.101
متوافق مع الإصدار 91 من Chrome
- تم حلّ المشكلة 1205107: تعذُّر الحصول على قيمة السمة للحقول في تطبيق الويب.
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 91.0.4472.19
متوافق مع الإصدار 91 من Chrome
- تم حلّ المشكلة 3744: تعذُّر تنفيذ SendKeys() وClick() بدون إظهار رسالة خطأ بعد التنقّل إلى رابط
- تم حلّ المشكلة 3746: تعديل قيم نقطة نهاية السمة بشكل غير صحيح
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 90.0.4430.24
يتوافق مع الإصدار 90 من Chrome
- تم حلّ المشكلة 3708: يتعذّر على GetElementLocation تحديد ما إذا كانت العناصر في shadow DOM مرئية
- تم حلّ المشكلة 3721: جمع سجلّ الأداء لبرنامج عامل الخدمة عند تفعيله
- تم حلّ المشكلة 3731: لا تعمل الدالة AdbImpl::GetPidByName بشكل صحيح على أنظمة تشغيل Android غير العادية، مثل نظام التشغيل على هواتف OnePlus
- تم حلّ المشكلة 3733: تعذُّر الوصول إلى النطاق على المضيف المحلي
- تم حلّ المشكلة 3734: يجب أن يعرض برنامج التشغيل رسالة خطأ عند محاولة ضبط ملف تعريف ارتباط على نطاق غير صحيح
- تم حلّ المشكلة 3743: إعادة تصميم دالة الاتصال وإصلاح مشكلة إزالة العنصر
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 89.0.4389.23
متوافق مع الإصدار 89 من Chrome
- تم حلّ المشكلة 3667: انقضى الوقت المحدّد لتلقّي رسالة من أداة العرض
- تم حلّ المشكلة 3675: يستخدم GetElementLocation طريقة inView التي تتعامل مع القيمة المنطقية بشكل خاطئ على أنّها مصفوفة
- تم حلّ المشكلة 3682: تعرض الدالة GetElementRegion حجمًا غير صحيح للعناصر التي تقع جزئيًا خارج إطار العرض
- تم حلّ المشكلة 3690: يتعذّر تشغيل ChromeDriver إذا كانت الإضافات تستخدم واجهة برمجة التطبيقات chrome.windows
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 88.0.4324.96
متوافق مع الإصدار 88 من Chrome
- تم حلّ المشكلة 3641: عدم تحميل الصفحة أو عرضها عندما لا تكون نافذة المتصفّح محل التركيز مع الإصدار التجريبي من Chrome الإصدار 87 والإصدار(87/86) من ChromeDriver
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 88.0.4324.27
متوافق مع الإصدار 88 من Chrome
- تم حلّ المشكلة 3611: يختلف ناتج
getText()في Protractor عن<element>.innerText - المشكلة التي تم حلّها 3625: تحسين توافق لقطات الشاشة للعناصر
- تم حلّ المشكلة 3628: Stale Element Reference وتم الإبلاغ عن عنوان URL غير صحيح مع عنوان URL يتضمّن عنوان URL آخر كجزء من مساره
- تم حلّ المشكلة 3631: إضافة إمكانية استخدام
webauthn:extension:largeBlob - تم حلّ المشكلة 3635: يبدو أنّ الإصدار 86 من Chromedriver -
chromedriver.quit()لا يمرّر حدث إلغاء التحميل بشكل صحيح - تم حلّ المشكلة 3649: لا يمكن نسخ النص المحدّد إلى الحافظة على نظام التشغيل Windows 10 عند استخدام وضع التشغيل بدون واجهة مستخدم
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 87.0.4280.88
متوافق مع الإصدار 87 من Chrome
- تم حلّ المشكلة 3641: عدم تحميل الصفحة أو عرضها عندما لا تكون نافذة المتصفّح محل التركيز مع الإصدار التجريبي من Chrome الإصدار 87 والإصدار(87/86) من ChromeDriver
- تم حلّ المشكلة 3657: انتهت مهلة متصفّح الخلفية للقطة الشاشة
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 87.0.4280.20
متوافق مع الإصدار 87 من Chrome
- تم حلّ المشكلة 2421: حذف قنوات إعادة توجيه المنافذ القديمة على خادم adb لنظام التشغيل Android
- تم حلّ المشكلة 3474: يجب تعديل قائمة الأجهزة الجوّالة المحاكية
- تم حلّ المشكلة 3507: تنفيذ "الحصول على الدور المحسوب"
- تم حلّ المشكلة 3508: تنفيذ "الحصول على التصنيف المحسوب"
- تم حلّ المشكلة 3584: إعادة تسمية خيار سطر الأوامر --whitelisted-ips في ChromeDriver
- تم حلّ المشكلة 3588: اتصال WebSocket ثنائي الاتجاه
- تم حلّ المشكلة 3594: يكتمل التنقّل قبل الأوان إذا تم تحميل إطار OOPIF قبل الصفحة الرئيسية
- تم حلّ المشكلة 3598: خيار سطر الأوامر لمنفذ أدوات المطوّرين الذي سيتم توجيهه إلى مقبس webview_devtools_remote
- تم حلّ المشكلة 3608: لا يتوافق Chromedriver debuggerAddress مع IPv6
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 86.0.4240.22
متوافق مع الإصدار 86 من Chrome
- تم حلّ المشكلة 3370: إيقاف Chrome بشكل سليم وإلا لن يتم حفظ ملف تعريف الارتباط بشكل صحيح في ملف SQLite الدائم
- تم حلّ المشكلة 3401: لا يحدّد JavaScript الخاص بـ "الحصول على موقع العنصر" مركز العنصر المرئي
- تم حلّ المشكلة 3462: بالنسبة إلى sendKeys، لا يعمل مفتاح CMD على أجهزة Mac
- تم حلّ المشكلة 3541: تحسين السجلّ بين Client وChromeDriver
- تم حلّ المشكلة 3559: عرض إصدار Chrome عندما يعرض ChromeDriver رسالة تفيد بأنّه غير متوافق
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 85.0.4183.87
متوافق مع الإصدار 85 من Chrome
- تم حلّ المشكلة 3578: لم يعُد الإصدار 85 من Chrome يسمح بالتفاعل السلس مع النوافذ عند فتح مربّع حوار تنبيه
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 85.0.4183.83
متوافق مع الإصدار 85 من Chrome
- تم حلّ المشكلة 3577: لا يرصد ChromeDriver 85 تغيير دليل Chrome (C:\Program Files)
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 85.0.4183.38
متوافق مع الإصدار 85 من Chrome
- تم حلّ المشكلة 3214: ChromeDriver78: إعادة ضبط اختيار النص باستخدام 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
متوافق مع الإصدار 84 من Chrome
- تم حلّ المشكلة 3420: بعد التبديل إلى نافذة الطباعة، يتوقف chromedriver عن الاستجابة
- تم حلّ المشكلة 3421: يعرض برنامج التشغيل نصًا سيريليًا بدون أنماط
- تم حلّ المشكلة 3422: تعذُّر عمل GetElementText مع الإصدار 1.6.0.3 من Prototype
- تم حلّ المشكلة 3434: يتعذّر الحصول على رسائل "assert" من سجلّات "المتصفّح"
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 83.0.4103.39
متوافق مع الإصدار 83 من Chrome
- تم تعديل Chromedriver ليعمل بشكل صحيح مع prototype.js.
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 83.0.4103.14
متوافق مع الإصدار 83 من Chrome
- تم حلّ المشكلة 1778: إيقاف launchApp نهائيًا من ChromeDriver
- تم حلّ المشكلة 2520: يمكن أن تنتظر InitSession إلى الأبد عندما يكون Chrome غير مستجيب
- تم حلّ المشكلة 3120: التنزيل في وضع Headless من علامة تبويب جديدة
- تم حلّ المشكلة 3234: تأكيد العثور على فاصلة منقوطة قبل السلسلة الفرعية
- تم حلّ المشكلة 3240: لا يتحقّق ExecuteGetElementRect من الحالة التي تم إرجاعها من GET_SIZE
- تم حلّ المشكلة 3331: تعرض الطريقة
get_cookies()مفاتيح "انتهاء الصلاحية" من النوع double، ولكن يجب أن تكون int64 في وضع W3C - تم حلّ المشكلة 3332: تم تسجيل انتهاء مهلة إعادة المحاولة على أنّه خطأ فادح
- تم حلّ المشكلة 3339: تم إنهاء Chromedriver بشكل غير متوقّع بالرمز null، الإشارة SIGTRAP
- تم حلّ المشكلة 3351: تحسين رسالة "اعتبارات الأمان"
- تم حلّ المشكلة 3352: إتاحة استخدام SendKeys لعناصر الألوان
- تم حلّ المشكلة 3353: يستمر انتظار التنقّل المعلّق بعد إيقاف سياق الإطار
- تم حلّ المشكلة 3375: تعذُّر تنفيذ الأمر getPageSource في الإصدار 80 من Chromedriver على بعض المواقع الإلكترونية
- تم حلّ المشكلة 3383: يبدو أنّ ChromeDriver 80+ على نظام التشغيل Windows يتوقف أو يتعطّل عند تنفيذ بعض الأوامر المتعلقة بالعناصر أو النقر
- تم حلّ المشكلة 3399: إزالة عملية التحقّق من wasThrown
ChromeDriver 81.0.4044.138
متوافق مع الإصدار 81 من Chrome
- تم تعديل Chromedriver ليعمل بشكل صحيح مع prototype.js.
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 81.0.4044.69
متوافق مع الإصدار 81 من Chrome
- تم إصلاح المشكلة: يتعطّل Chromedriver عند استخدام getPageSource على بعض المواقع الإلكترونية.
- تم إصلاح المشكلة: يتعطّل ChromeDriver عند تنفيذ أوامر معيّنة خاصة بالعناصر أو النقر.
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 81.0.4044.20
متوافق مع الإصدار 81 من Chrome
- تم إصلاح الخطأ الذي يحدث عند محاولة الحصول على الموقع الجغرافي لعنصر HTML.
- أصبحت أوامر "الحصول على ملف تعريف الارتباط" و"إضافة ملف تعريف الارتباط" خاصة بالإطار.
- تم حلّ بعض المشاكل التي تحدث مع المواقع الإلكترونية التي تعيد تعريف عناصر JavaScript العادية.
- سيستمر ChromeDriver في انتظار اكتمال التحميل بعد تلقّي رسالة "تم إغلاق الهدف".
- يعرض Chromedriver الآن رمز خطأ متوافقًا مع المواصفات عند انتهاء المهلة
- تم إصلاح المشكلة: استغراق ChromeDriver وقتًا طويلاً بشكل غير متوقّع للردّ على الأمر NewSession.
- يمكن الآن ضبط مهلات محدّدة من قِبل المستخدم تزيد عن 10 دقائق.
- تم إصلاح الخطأ: تعذُّر اتصال ChromeDriver بـ "أدوات مطوّري البرامج" بسبب عدم تطابق IPv4 وIPv6.
- تمت استعادة ترتيب البحث عن البرنامج الثنائي لمتصفّح Chrome على نظام التشغيل Linux.
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 80.0.3987.106
متوافق مع الإصدار 80 من Chrome
- تمت استعادة ترتيب البحث عن البرنامج الثنائي لمتصفّح Chrome على نظام التشغيل Linux
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 80.0.3987.16
متوافق مع الإصدار 80 من Chrome
- تم إلغاء تحميل الصفحة الثابتة عند استخدام خادم وكيل.
- ينتظر Chromedriver الآن تحميل الإطار الحالي.
- سيتضمّن سجلّ ChromeDriver المنفذ الذي يستخدمه برنامج التشغيل.
- تم تفعيل SetGeoLocation لوضع w3c.
- تمت إضافة نص التنبيه الناقص للحالة UnexpectedAlertOpen.
- تم تحسين الرسالة التي تظهر عند تحميل إضافة CRX2.
- تم إصلاح مشكلة تزامن محتملة في ExecuteGetPageSource.
- سيضيف ChromeDriver العلامة --ignore-certificate-errors عندما تكون إمكانية acceptInsecureCerts صحيحة
- تعديل رسالة الخطأ وحالة الإرجاع لعدم توفّر سياق التنفيذ
- تم إصلاح المشكلة: قد يتم حظر ChromeDriver إلى أجل غير مسمى أثناء انتظار عملية التنقّل المعلّقة.
- تمت إضافة السمة SameSite إلى AddCookie وGetCookie.
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 79.0.3945.36
يتوافق مع الإصدار 79 من Chrome
يتضمّن التغيير التالي مقارنةً بالإصدار 79.0.3945.16:
- تم إصلاح عملية احتساب إحداثيات العناصر بشكل غير صحيح
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 79.0.3945.16
يتوافق مع الإصدار 79 من Chrome
- تم إصلاح تعطُّل ChromeDriver الناتج عن تنبيه JavaScript الذي تم إطلاقه أثناء تنفيذ الأمر
- تم إصلاح الخلل الذي كان يؤدي إلى قفل Chromedriver عند ظهور تنبيه أثناء أخذ لقطة شاشة
- إزالة الخيار --ignore-certificate-errors من أمر تشغيل Chrome
- تم تغيير platform وplatformName إلى windows على Win10
- تم إصلاح الخطأ window.navigator.webdriver غير المحدّد عند استبعاد "enable-automation"
- إصلاح اختبار WPT "test_not_editable_inputs[hidden]"
- تم إصلاح الخطأ "لا يمكن النقر على العنصر" عند استخدام وضع التشغيل بلا واجهة مستخدم رسومية
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 78.0.3904.105
متوافق مع الإصدار 78 من Chrome
يتضمّن هذا الإصدار التغيير التالي مقارنةً بالإصدار 78.0.3904.70: * تم إصلاح عملية احتساب إحداثيات العناصر بشكل غير صحيح
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 78.0.3904.70
متوافق مع الإصدار 78 من Chrome
يتضمّن التغيير التالي مقارنةً بالإصدار 78.0.3904.11:
- تم التراجع عن التغيير الذي تم إجراؤه لضبط حجم لقطة الشاشة على شاشة Retina بسبب المشاكل المتعددة التي تم الإبلاغ عنها
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 78.0.3904.11
متوافق مع الإصدار 78 من Chrome
- تم إصلاح عدّة مشاكل في تسلسل كائن JavaScript
- تم إصلاح خطأ في مطابقة الإمكانات في متصفّح Chrome على Android
- تنفيذ عملية إعداد الأذونات تلقائيًا
- حجم لقطة الشاشة ثابت على شاشة Retina
- تم إصلاح مهلة تحميل الصفحة في بعض السيناريوهات
- تحسين المطابقة مع إمكانية platformName
- تم إصلاح رمز الخطأ الذي يتم عرضه عند نقل المؤشر إلى خيارات القائمة المنسدلة
- تم إصلاح مشكلة تؤثر في التنزيل في وضع التشغيل بدون واجهة مستخدم رسومية
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 77.0.3865.40
يتوافق مع الإصدار 77 من Chrome
يتضمّن هذا الإصدار التغييرات التالية مقارنةً بالإصدار 77.0.3865.10:
- تم إصلاح خطأين في تسلسل كائنات JavaScript وإلغاء تسلسلها
- تم إصلاح معالجة platformName: android أثناء مطابقة الإمكانات
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 77.0.3865.10
يتوافق مع الإصدار 77 من Chrome
- تم إصلاح عدّة مشاكل في تنفيذ Actions API
- تحسين تنفيذ رمز JavaScript والتعامل مع النتائج
- تم إصلاح خطأ كان يؤدي إلى رفض طلبات POST بشكل غير صحيح مع نص فارغ في وضع OSS
- أداة تتبُّع تنقّل أكثر فعالية
- دعم استراتيجية تحميل الصفحة المسبق
- تمت إضافة الأمر New Window من مواصفات W3C WebDriver
- إتاحة حفظ الملفات التي يتم تنزيلها في وضع التشغيل بلا واجهة مستخدم رسومية
- تمت إضافة إمكانية تحميل إضافات CRX3
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 76.0.3809.126
متوافق مع الإصدار 76 من Chrome
يتضمّن هذا الإصدار التغييرات التالية مقارنةً بالإصدار 76.0.3809.68:
- تم إصلاح خطأين في تسلسل كائنات JavaScript وإلغاء تسلسلها
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 76.0.3809.68
متوافق مع الإصدار 76 من Chrome
يتضمّن هذا الإصدار التغييرات التالية مقارنةً بالإصدار 76.0.3809.25:
- تم إصلاح خطأ في رصد المراجع الدائرية في كائنات JavaScript
- تم إصلاح الخلل الذي يتسبّب في تعطُّل ChromeDriver عند حدوث أنواع معيّنة من أخطاء JavaScript
- تم إصلاح خطأ يمنع واجهة برمجة التطبيقات الخاصة بالإجراءات من التفاعل مع العناصر داخل Shadow DOM
- تم إصلاح خطأ في تتبُّع حالة مفتاح التعديل بين أوامر واجهة برمجة التطبيقات للإجراءات
- تم إصلاح خطأ في تتبُّع مواقع المؤشر بين أوامر واجهة برمجة التطبيقات للإجراءات
- حفظ الخطأ "لا يمكن استدعاء أمر غير متوافق مع معيار W3C أثناء استخدام وضع W3C" في ملف السجلّ عند حدوثه
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 76.0.3809.25
متوافق مع الإصدار 76 من Chrome
تشمل التغييرات التالية مقارنةً بالإصدار 76.0.3809.12:
- تم إصلاح خطأ كان يؤدي إلى رفض طلبات POST بشكل غير صحيح مع نص فارغ في وضع OSS
- تمت إضافة نقاط نهاية جديدة لاسترداد سجلّ Chrome
- تمت إضافة نقطة نهاية للأمر Is Displayed في وضع W3C
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 76.0.3809.12
يتوافق مع الإصدار 76 من Chrome
- تم الانتهاء من تنفيذ Actions API
- تحسين توافق معالجة المهلة المحدّدة للنص البرمجي مع المواصفات
- تحسين تسلسل النتائج من الأمر Execute Script
- إصلاح المشاكل المتعلّقة بتمرير العنصر إلى العرض
- تمت إضافة معالجة مفتاح الإلغاء المحدّد في مواصفات WebDriver
- إصلاح مشكلة معالجة ردّ الخطأ غير المعالج للتنبيه
- تم إصلاح مشكلة معالجة العنصر
<details> - تم تعديل الخيار excludeSwitches للسماح باستخدام شرطات اختيارية في بداية أسماء الخيارات
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 75.0.3770.140
متوافق مع الإصدار 75 من Chrome
يتضمّن هذا الإصدار التغييرات التالية مقارنةً بالإصدار 75.0.3770.90:
- تم إصلاح الخلل الذي كان يؤدي إلى تعطُّل ChromeDriver عند حدوث بعض أنواع أخطاء JavaScript
- تم إصلاح خطأ في الحفاظ على حالة مفتاح التعديل بين الإجراءات
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 75.0.3770.90
متوافق مع الإصدار 75 من Chrome
يتضمّن هذا الإصدار التغييرات التالية مقارنةً بالإصدار 75.0.3770.8:
- تم إصلاح خطأ كان يؤدي إلى رفض طلبات POST بشكل غير صحيح مع نص فارغ في وضع OSS
- تمت إضافة نقاط نهاية جديدة لاسترداد سجلّ Chrome
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 75.0.3770.8
متوافق مع الإصدار 75 من Chrome
التغيير الأبرز هو أنّ ChromeDriver يعمل الآن في الوضع المتوافق مع معيار W3C تلقائيًا. تشمل التغييرات الأخرى ما يلي:
- تم إصلاح الخطأ الذي كان يؤدي إلى ظهور حدث التمويه مرتين أثناء مسح العنصر
- تمت إعادة تسمية إمكانية loggingPrefs إلى goog:loggingPrefs، وفقًا لمعيار W3C
- تم إصلاح معالجة الأخطاء في وضع W3C
- التعامل بشكل صحيح مع إنشاء ملفات تعريف الارتباط بدون نقطة بادئة في اسم النطاق
- تسمح بقيمة فارغة لمهلة النص البرمجي
- تم إصلاح الأمر "إرسال مفاتيح العنصر الثابت" لإدخال الملفات باستخدام السمة "متعددة"
- تم إصلاح الأمر Get Active Element لعرض الخطأ "no such element" عندما لا يكون هناك عنصر نشط
- تم إصلاح مشكلة الانتقال إلى عنوان URL غير صحيح لعرض الخطأ "وسيطة غير صالحة"
- تم إصلاح رمز حالة HTTP عند تلقّي معرّف جلسة غير صالح
- تم إصلاح خطأ الاستجابة عند عدم توفّر مَعلمة الإدخال أو عند صياغتها بشكل غير صحيح
- تم إصلاح الأمر Execute Script للتعامل مع تعليق JavaScript المستند إلى الأسطر
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 74.0.3729.6
متوافق مع الإصدار 74 من Chrome
- تم إصلاح خطأ أدّى إلى إنشاء ملف debug.log غير متوقّع على أجهزة Windows
- تم إصلاح مشكلة النقر بالماوس والسحب والإفلات داخل مستند SVG
- تمت إضافة عنوان cache-control في الردود من ChromeDriver
- تم إصلاح نوع الخطأ الذي يحدث عندما يتم اعتراض النقرة بواسطة عنصر مختلف
- تم إصلاح الخلل الذي كان يؤدي إلى تعذُّر تشغيل ChromeDriver على أجهزة Linux التي لا تتضمّن /dev/shm
- إصلاح بعض أنواع أحداث النقر المزدوج
- الأمر Fixed Get Sessions
- تم إصلاح خطأ في عملية التحقّق من الأخطاء في الأمر Switch To Frame
- إصلاح الأمر "الحصول على مصدر الصفحة"
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 73.0.3683.68
يتوافق مع الإصدار 73 من Chrome
- تم إصلاح خطأ أدّى إلى إنشاء ملف debug.log غير متوقّع على أجهزة Windows
- تم إصلاح رمز الخطأ الذي يتم عرضه من الأمر "تنفيذ النص البرمجي" في بعض السيناريوهات
- تمت إضافة عنوان cache-control في الردود من ChromeDriver
- إبقاء الاتصال نشطًا تلقائيًا على خادم HTTP
- تم إصلاح الأمر "إغلاق النافذة" للتعامل بشكل صحيح مع طلبات المستخدم
- تم إصلاح رمز الخطأ الذي يتم عرضه أثناء إرسال المفاتيح إلى عنصر غير مفعّل
- تحسين توافق معايير معالجة قيمة المهلة
- تحسين توافق مواصفات الأمر "إضافة ملف تعريف ارتباط"
- زيادة طول قائمة انتظار الاستماع لخادم HTTP
- تم إصلاح الأمر "هل العنصر معروض؟" في الإصدار 0 من Shadow DOM
- تمت إضافة تحذير بشأن تغيير سلوك الأمر "محو العنصر" في ملف السجلّ
- تم إصلاح الأمر "تنفيذ البرنامج النصي" لتحويل document.all إلى تنسيق JSON بشكل صحيح
- تحسين طريقة التعامل مع المراجع غير الصالحة للعناصر
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 2.46
متوافق مع الإصدارات 71 إلى 73 من Chrome
- تم إصلاح رمز الخطأ الذي يتم عرضه من الأمر "تنفيذ النص البرمجي" في بعض السيناريوهات
- إبقاء الاتصال نشطًا تلقائيًا على خادم HTTP
- تم إصلاح الأمر "إغلاق النافذة" للتعامل بشكل صحيح مع طلبات المستخدم
- تم إصلاح رمز الخطأ الذي يتم عرضه أثناء إرسال المفاتيح إلى عنصر غير مفعّل
- تحسين توافق معايير معالجة قيمة المهلة
- تحسين توافق أمر "إضافة ملف تعريف ارتباط" مع المواصفات
- تحسين توافق أمر "التبديل إلى إطار" مع المواصفات
- زيادة طول قائمة انتظار الاستماع لخادم HTTP
- تم إصلاح الأمر "هل العنصر معروض؟" في الإصدار 0 من Shadow DOM
- أمر النقر المزدوج على عنصر ثابت
- تمت إضافة تحذير بشأن تغيير سلوك الأمر "محو العنصر" في ملف السجلّ
- تم إصلاح الأمر "تنفيذ البرنامج النصي" لتحويل document.all إلى تنسيق JSON بشكل صحيح
- تحسين طريقة التعامل مع المراجع غير الصالحة للعناصر
لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار.
ChromeDriver 2.45
متوافق مع الإصدارات 70 إلى 72 من Chrome
- تم إصلاح مشكلة عدم توافق "الجلسة الجديدة" مع المواصفات
- تم إصلاح مشكلة عدم تشغيل ChromeDriver لمتصفّح Chrome إذا كان إصدارا Chrome وChromeDriver غير متوافقَين
- تم إصلاح مشكلة عرض رمز خطأ غير صحيح عند استخدام أداة تحديد موقع غير صالحة في الأمر "العثور على العنصر"
- تم إصلاح مشكلة عدم صحة بعض رموز حالة ChromeDriver
- تم إصلاح خطأ في التجميع في JavaScript داخل WebViewImpl::DispatchTouchEventsForMouseEvents
- يجب أن تتعامل أوامر حجم النافذة الثابت مع طلبات المستخدم
- تم إصلاح مشكلة عدم بدء ChromeDriver لتشغيل Chrome بشكل صحيح باستخدام خيار Chrome "user-data-dir="
- أمر Fixed Status غير متوافق مع المواصفات
- تم إصلاح المشكلة المتعلقة بإضافة إمكانية استخدام strictFileInteractability
ChromeDriver 2.44
متوافق مع الإصدارات من 69 إلى 71 من Chrome
- تم إصلاح الخطأ WindowMaximize على أجهزة Mac
- تم إصلاح الخطأ غير الصحيح "alert open error" عند طلب معرّف النافذة
- يجب أن تتضمّن ميزة "إرسال المفاتيح" للعناصر الثابتة السمة "نص" في وضع W3C
- تم إصلاح حالة XML الخاصة التي لا يتم فيها التعامل مع Is Element Enabled وفقًا للمواصفات
- لم يتم التعامل مع حالة XML الخاصة الثابتة لـ "الحصول على قيمة CSS للعنصر" وفقًا للمواصفات
- يجب أن يتحقّق Fixed Set Window Rect من صحة الإدخال
- إصلاح المشكلة: دعم أوضاع unhandledPromptBehavior الجديدة
ChromeDriver 2.43
متوافق مع الإصدارات من 69 إلى 71 من Chrome
تشمل التغييرات ما يلي:
- لا يتوافق تحليل إعدادات الخادم الوكيل الثابت مع المعايير
- الأمر "تشغيل التطبيق" الثابت غير مستقر
- تم إصلاح مشكلة التقاط لقطة شاشة غير صحيحة للعنصر داخل إطار iframe
- تمت إضافة ميزة تتيح تغيير حجم النافذة في ChromeDriver عبر اتصال عن بُعد
- تم إصلاح مشكلة عدم معالجة رموز الخطأ في عنصر Clear
- تم إصلاح مشكلة عدم الانتظار إلى أن يصبح العنصر مرئيًا
- تم إصلاح الخطأ "لم يتم تنفيذ Get element property"
- لا يتوافق خيار "التبديل إلى إطار ثابت" مع المواصفات
- تم إصلاح مشكلة عدم عرض رموز الخطأ المتوافقة مع المواصفات في Execute Async Script
- تم إصلاح مشكلة عدم عرض رموز الخطأ المتوافقة مع المواصفات في "تنفيذ النص البرمجي"
- رمز الخطأ الثابت في ExecuteGet لا يتوافق مع المواصفات
- تم إصلاح مشكلة عدم عرض رموز الخطأ المتوافقة مع المواصفات عند استخدام Send Alert Text
- تم إصلاح الخطأ الذي يجعل الدالة clear() في حقل إدخال من النوع date تتصرف وكأنّ العنصر غير قابل للتعديل من قِبل المستخدم
- تم إصلاح مشكلة عدم حصول Chromedriver على معرّف النافذة لعلامة التبويب التي تم فتحها يدويًا
- تم إصلاح مشكلة السماح بإلحاق ملف سجلّ جديد أو بدئه في chromedriver
- تم إصلاح مشكلة عدم تفعيل وضع W3C عند بدء جلسة جديدة إذا كانت العلامة في firstMatch
ChromeDriver 2.42
متوافق مع الإصدارات 68 إلى 70 من Chrome
تشمل التغييرات ما يلي:
- إصلاح ClickEelement في محاكاة الأجهزة الجوّالة
- تم إصلاح عناوين IP المُدرَجة في القائمة البيضاء باستخدام الإصدار الرابع من بروتوكول الإنترنت (IPv4)
- تم إصلاح مشكلة بدء ChromeDriver باستخدام العلامة whitelisted-ips على نظام التشغيل Mac
- تم تعديل SetTimeout لقبول التنسيقات المتوافقة مع معيار W3C وغير المتوافقة معه
- إصلاح مشكلة أخذ لقطة شاشة للعنصر
- تم إصلاح مشكلة بحث ChromeDriver عن ملفات Chrome الثنائية في مسار نظام أيضًا
- تم إصلاح مشكلة تكبير النافذة وملء الشاشة
- تم تنفيذ ميزة إعادة تشغيل السجلّ. ( لا تعمل هذه الميزة على أجهزة Android و"المتصفّح البعيد" بعد)
- تم إصلاح بعض رموز الخطأ التي لم تكن متوافقة مع معيار W3C
- تم إصلاح مشكلة عدم التعامل بشكل صحيح مع console.log الذي يتضمّن وسيطات متعدّدة
- تم إصلاح GetElementRect للسماح باستخدام الأرقام المزدوجة
- محاكاة اللمس الثابتة
ChromeDriver 2.41
متوافق مع الإصدارات من 67 إلى 69 من Chrome
تشمل التغييرات ما يلي:
- تم إصلاح مشكلة عند تشغيل ChromeDriver باستخدام الخيار "whitelisted-ips"
- يتم عرض منفذ تصحيح الأخطاء عن بُعد في الإمكانات
- تم تنفيذ عملية الحصول على حجم النافذة على Android
- تحسين رسائل الخطأ عند تشغيل Chrome على الكمبيوتر
- يتعذّر تشغيل ChromeDriver بسرعة عندما يتعذّر بدء تشغيل ملفات Chrome الثنائية
- تتوافق قيمة إرجاع Close Window مع المواصفات