لوحات المتصفح
افتح المواقع بجانب الطرفية وتنقّل بعناصر تحكم أصلية واحتفظ بالروابط داخل المشروع.
يمكن أن يضع Zshell متصفحًا مدمجًا في أي علامة تبويب أو لوحة مقسّمة. يفيد ذلك لخادم تطوير محلي أو وثائق واجهة برمجة أو مشكلة مسجّلة، أو أي محتوى تريد إبقاءه بجانب الطرفية التي تستخدمه.
فتح متصفح
- اختر ملف ← علامة تبويب متصفح جديدة لفتح علامة تبويب فارغة.
- افتح لوحة الأوامر (Cmd+P) وشغّل علامة تبويب متصفح جديدة أو لوحة متصفح جديدة.
- انقر بزر الفأرة الأيمن مع الضغط على Command على عنوان URL اكتُشف في الطرفية، ثم اختر علامة تبويب متصفح جديدة أو لوحة متصفح جديدة لفتحه دون نسخ العنوان.
تنتمي علامات تبويب المتصفح إلى المشروع المحدد وتشارك في تخطيط علامات التبويب واللوحات المعتاد. إذا لم يكن هناك مشروع مفتوح، ينشئ Zshell مشروعًا للمتصفح.
العنوان والبحث
يقبل الحقل العلوي عنوان URL كاملًا أو اسم مضيف أو كلمات للبحث:
- يتحول
zshell.shإلى عنوان HTTPS. - تستخدم
localhostوأسماء المضيفين المحلية وعناوين IP والمنافذ المحددة صراحةً بروتوكول HTTP. - يتحول كل ما عدا ذلك إلى بحث في Google.
استخدم Cmd+L للتركيز على الحقل وCmd+R لإعادة التحميل. يتضمن شريط الأدوات أيضًا الرجوع والتقدم والإيقاف/إعادة التحميل والمشاركة والفتح في المتصفح الافتراضي. وتعمل إيماءات الرجوع والتقدم على لوحة التعقب أيضًا.
| الإجراء | الاختصار |
|---|---|
| التركيز على شريط العنوان | Cmd+L |
| إعادة تحميل الصفحة | Cmd+R |
فتح الروابط في المكان الذي تريده
انقر بزر الفأرة الأيمن على رابط في الصفحة لاختيار فتح الرابط في علامة تبويب جديدة أو فتح الرابط في لوحة جديدة. تبقى الصفحة الجديدة في مساحة عمل المشروع نفسه.
في الطرفية، يؤدي النقر العادي مع Command إلى فتح عنوان الويب المكتشف في المتصفح الافتراضي. أما النقر بزر الفأرة الأيمن مع Command فيعرض خيار علامة تبويب أو لوحة داخل Zshell. تتبع المسارات المحلية سير عمل مشابهًا موضحًا في المسارات وعناوين URL.
ما يتم الاحتفاظ به
يحافظ التبديل بين علامات التبويب أو المشاريع على الصفحة كما تركتها، بما في ذلك السجل وموضع التمرير والنماذج وحالة الصفحة الداخلية. عند إعادة تشغيل Zshell، يُستعاد عنوان URL الحالي والتخطيط، لكن لا يُستعاد سجل الرجوع والتقدم كاملًا.
تحتفظ لوحات المتصفح بملفات تعريف الارتباط وتسجيلات الدخول وبيانات المواقع الأخرى عبر علامات التبويب ومرات التشغيل. هذا ليس وضع تصفح خاص.
اطلب من وكيل اختبار الصفحة
اطلب من وكيل البرمجة فحص الصفحة المفتوحة في هذا المشروع، أو تعبئة نموذج، أو التحقق من نتيجة، أو التقاط المنطقة المرئية. يعيد استخدام جلسة المتصفح الحالية ويبقي التركيز في الطرفية افتراضيًا. ويمكنه فتح عنوان تطوير محلي في لوحة متصفح بالخلفية.
للبرامج النصية، نفّذ هذه الأوامر داخل طرفية Zshell. احفظ قيمة browser_id المسترجعة واستبدل بها BROWSER_ID أدناه:
zshell +browser list
zshell +browser open http://localhost:3000 --wait
zshell +browser snapshot --browser BROWSER_ID
zshell +browser fill --browser BROWSER_ID --selector '#search' --text 'terminal'
zshell +browser click --browser BROWSER_ID --selector 'button[type="submit"]'
zshell +browser wait --browser BROWSER_ID --selector '#results' --timeout 10000
zshell +browser screenshot --browser BROWSER_ID --output /tmp/zshell-page.pngتعيد اللقطات نص الإطار الرئيسي وتسميات إمكانية الوصول ومراجع العناصر. تنتهي صلاحية المراجع بعد تغييرات الصفحة أو الإجراءات؛ التقط لقطة جديدة قبل إعادة استخدامها. يجب أن يطابق محدد CSS عنصرًا واحدًا فقط. استخدم navigate وback وforward وreload وstop للتنقل.
تقبل الأتمتة عناوين HTTP/HTTPS الكاملة وabout:blank فقط. تتطلب البروتوكولات الأخرى والتنزيلات واختيار الملفات ومربعات الحوار الأصلية تدخلك. ينتهي هذا القيد بعد التنقل يدويًا عبر شريط العنوان أو الأدوات. تبقى الأوامر ضمن مشروع ونافذة الطرفية المستدعية. تتراوح --timeout بين 100 و30000 مللي ثانية. تقتصر اللقطات على 200 عنصر و32768 حرفًا و256 KiB، وتُحذف قيم حقول كلمات المرور والملفات. تقتصر لقطات PNG للمنطقة المرئية على 512 KiB، وتعمل حتى قبل إظهار اللوحة بمساحة 1024 × 768 دون تغيير التركيز، ولا تستبدل الملفات. قلّل --width عند الحاجة. راجع zshell +browser --help.
برامج الصفحة وحالة تسجيل الدخول
zshell +browser eval --browser BROWSER_ID --script 'Promise.resolve({title: document.title})'
zshell +browser state save --browser BROWSER_ID --output /tmp/zshell-login.json
zshell +browser state load --browser BROWSER_ID --input /tmp/zshell-login.json
zshell +browser reload --browser BROWSER_ID --waitينفّذ eval --script الشيفرة في الإطار الرئيسي الحقيقي، وينتظر Promise المعادة، ثم يرجع JSON في value؛ تتحول undefined إلى null. استخدم تعبير دالة غير متزامنة مع await. الحدود: إدخال 64 KiB، ونتيجة 256 KiB و10000 قيمة و64 مستوى. تنتهي صلاحية مراجع DOM بعد التنفيذ. انتهاء المهلة يوقف الانتظار ولا يلغي الشيفرة. افحص الصفحة قبل تكرار تعديل؛ قد تستلزم حلقة متزامنة لا نهائية إغلاق الصفحة. تُحقن التعبيرات المفردة، بما فيها IIFE، كبرامج Script عامة أصلية. تظل السلاسل متعددة التعليمات خاضعة لسياسة CSP للصفحة؛ إذا حُظر تقييم السلاسل، ضع التعليمات داخل IIFE.
يحفظ state save ملفات Cookie المنطبقة على المضيف الهدف (بما فيها النطاق الأب وHttpOnly) وlocalStorage للمصدر الحالي بصيغة Playwright storage-state JSON. يدمج state load ملفات Cookie ويستبدل localStorage لهذا المصدر؛ أعد التحميل بعدها. يجب تطابق البروتوكول والمضيف والمنفذ تمامًا. تُرفض النطاقات غير المرتبطة واللواحق العامة والحقول غير المدعومة والأنواع غير الصالحة قبل أي تعديل. تتطلب ملفات Secure استخدام HTTPS.
استخدم --format cookies في الأمرين لصيغة Netscape cookies.txt التي لا تحفظ localStorage أو SameSite. الحد 256 KiB، وتتضمن الملفات بيانات اعتماد؛ أبقها خاصة وخارج Git. يتطلب الاستيراد ملفًا عاديًا متاحًا للمالك فقط (مثل 0600) ويرفض الروابط الرمزية. ينشئ التصدير ملفًا خاصًا جديدًا دون استبدال مسار موجود. تظل بيانات WebKit مشتركة بين اللوحات، وتبقى قيود المشروع والنافذة والتنقل سارية.
الإعلانات وأدوات التتبع
تفعّل الإعدادات ← المتصفح حظر WebKit افتراضيًا باستخدام EasyList وEasyPrivacy. عطّل كل قائمة منفردة أو أضف رابط قائمة ABP عبر HTTP/HTTPS في كل سطر ثم اختر تطبيق القوائم. الحد 8 قوائم، كل منها 8 MiB. HTTP غير مشفّر.
تُطبّق القواعد على الطلبات اللاحقة في جميع اللوحات. أعد تحميل الصفحات بعد التغيير. يفرض تحديث القوائم الآن التحديث. تُخزّن القوائم محليًا؛ بعد إعادة التشغيل يتحقق فتح المتصفح من القوائم الأقدم من أربعة أيام. تعرض الإعدادات المرشحات المحوّلة والمتخطاة والأخطاء واستخدام التخزين المؤقت. لا يؤدي فشل استبدال قائمة إلى إعادة استخدام قائمة أخرى غير محددة بصمت.
يدعم أحرف URL البديلة والمراسي وأنواع الموارد الشائعة واستثناءات @@ والنطاقات البسيطة وإخفاء CSS عبر ##/#@#. تعتمد النطاقات على الصفحة الرئيسية وتصنيف الأطراف على WebKit. تُتخطى السكربتات المصغرة والمرشحات الإجرائية وإعادة التوجيه والتعبيرات النمطية والسماح بصفحة كاملة واستثناء نطاقات فرعية لنطاق مضمن. التوافق مع uBlock Origin جزئي.