Electron: نسخة مقطوعة الرأس للاختبار

تم إنشاؤها على ٩ أبريل ٢٠١٤  ·  82تعليقات  ·  مصدر: electron/electron

zcbenz ما مقدار العمل الذي تعتقد أنه سيكون لإنشاء نسخة مقطوعة الرأس من قذيفة الذرة يمكن استخدامها كبديل عن phantomjs ؟

يتخلف phantomjs أكثر فأكثر عما تفعله متصفحات الويب الفعلية اليوم وسيكون من الرائع أن يكون لديك شيء أكثر تحديثًا لاستخدامه في الاختبار بدون رأس.

enhancement

التعليق الأكثر فائدة

فيما يتعلق بـ NightmareJS: نحن نعمل حاليًا على إصدار من Nightmare مبني على Chrome بدون رأس حتى قادر على العمل في بيئات بدون خادم مثل AWS Lambda. سنفتح المصدر قريبًاgraphcool. 🚀

ال 82 كومينتر

باستخدام نافذة المتصفح المخفية ، يمكن لـ atom-shell فعل ما يفعله phantomjs ، ويمكن ترجمة المثال الموجود في الصفحة الرئيسية لـ phantomjs إلى atom-shell:

BrowserWindow = require('browser-window');

console.log('Loading a web page');
var page = new BrowserWindow({show: false});
var url = 'http://www.phantomjs.org/';
page.on('loading-state-changed', (event, isLoading) {
  if (!isLoading)
    //Page is loaded!
    require('app').exit();
});
page.loadUrl(url);

بالطبع قد نحتاج إلى إضافة المزيد من واجهات برمجة التطبيقات لأغراض اختبار الأتمتة.

المشكلة الوحيدة هي بدلاً من الرسم في المخزن المؤقت الافتراضي ، تقوم قذيفة atom-shell بالفعل برسم الصفحة في نافذة حقيقية ، وهذا يتطلب بيئة رسومية ، ولا يهم في نظام التشغيل Window و OS X ، ولكن في نظام Linux يتعين علينا استخدام xvfb لتوفير خادم X لـ atom-shell. هذا حسب التصميم في واجهة برمجة تطبيقات محتوى Chromium ، لذلك لا يمكننا فعل أي شيء لإزالة تبعية بيئة الرسوم.

لقد نجحت مع هذا مؤخرًا (باستخدام Xvfb على خادم Ubuntu). حالة الاستخدام الخاصة بي هي التقاط لقطات شاشة لصفحات نموذجية. في الواقع ، لقد وجدت أن atom-shell من خلال Xvfb على الخادم (m3-large) تتمتع بأداء أفضل من أداء Macbook pro المحلي. قادني هذا إلى الرغبة في جعل قذيفة الذرة تعمل من خلال Xvfb في OSX أيضًا.

نظرًا لأن osx يأتي مع Xvfb ، فإن هذا الجزء سهل. هل يمكنني الحصول على atom-shell لاستخدام عرض Xvfb في OSX؟ استخدام متغير env القياسي DISPLAY كما أفعل في لينكس لا يعمل. ربما لا يعرف libchromiumcontent كيفية استخدام X11 عند التشغيل في داروين؟

يعمل Xvfb فقط مع التطبيقات التي تمت كتابتها لبيئة X11 ، على OS X atom-shell يستخدم Cocoa للعرض ، والذي أعتقد أنه لا يمكن العمل مع Xvfb.

نعم نوعا ما وضع ذلك معا. ربما ليست طريقة تجميع من المصدر لـ X11 بدلاً من ذلك؟

zcbenz ، لا يمكن حاليًا إنشاء BrowserWindow أكبر من الدقة الحالية على OS X ، حتى إذا كنت تستخدم new BrowserWindow({show: false});

FWeinb هل يمكنك فتح تذكرة خاصة منفصلة لما ورد أعلاه؟

تم إنشاء # 475

أقوم بإغلاق هذا لأنه لا توجد طريقة لرسم صفحة دون إنشاء عنصر واجهة مستخدم أصلي في Chromium ، ولا أعتقد أنهم سيسمحون بذلك على الإطلاق.

بالنسبة للاختبارات التلقائية ، فإننا ندعم السيلينيوم.

يدعم مشروع CEF العرض خارج الشاشة ، لذا يمكنك رسم الشاشة في مخزن مؤقت بدلاً من نافذة. فيما يتعلق بخادم X لنظام Linux ، يبدو أن هناك طريقة للعمل بدونه عن طريق إضافة هدف يسمى Ozone (انظر المناقشة هنا ).

tiktin شكرا على المعلومات! أنا أعيد فتح هذا نظرًا لوجود تطبيق حالي حول كيفية القيام بذلك.

يمكننا حقا استخدام الدعم لهذا. لقد استبدلنا مؤخرًا Phantom بـ Electron in Nightmare وأحبها حتى الآن ، لكنها لا تعمل خارج الصندوق على Linux.

إليك ما يتعين علينا القيام به الآن لتنشيطه: https://github.com/segmentio/nightmare/issues/224#issuecomment -141575361

لقد تم تكليفي بمهمة أتمتة سلوك المستخدم لأحد تطبيقات الويب الخاصة بنا والتي سيتم تحويلها إلى تطبيق Electron لسطح المكتب المستقل. قبل أن تقرر شركتنا القيام بهذه الخطوة ، قمنا بإنشاء كائنات الصفحة باستخدام برنامج تشغيل الويب chrome وتفاعلنا مع تطبيق الويب من خلال استدعاء الأزرار / القوائم المنسدلة / مربعات النص باستخدام محددات css. هل هناك طريقة للقيام بذلك باستخدام تطبيق ويب ملفوف بصدفة الإلكترون؟ تخطط الشركة لاستخدام خيارات شريط القوائم لاستدعاء وظائف معينة وحاولت الوصول إلى خيارات شريط القائمة الافتراضية مثل ملف / تحرير / مساعدة باستخدام برنامج تشغيل JavaScript دون نجاح. هل هناك أي أمثلة حول كيفية القيام بذلك؟

https://github.com/segmentio/nightmare/issues/224#issuecomment -141575361 يبدو أن مقتطف matthewmueller يعمل على Linux: +1:

هل حصل أي شخص على اختبار مقطوع الرأس يعمل على SuSE؟ SLES على وجه التحديد؟

fritx هو نفسه مستخدم لـ SlimerJS ، لكن هذا ليس وضع مقطوعة الرأس.

fritx هذا ما قاله zcbenz ، عليك تشغيل Xvfb. يعتمد كل من CEF3 و Chromium Content Shell حاليًا على Xlib. ولكن مع اكتمال الأوزون: https://www.chromium.org/developers/design-documents/ozone
ستكون قادرًا على توفير أي مستوى منخفض من الإدخال / الإخراج.

على ما يبدو ، هناك خطأ رئيسي في Chromium نفسه: https://code.google.com/p/chromium/issues/detail؟id=546953

هذا مثير للاهتمام:

التاريخ: الأربعاء 02 ديسمبر 15:35:21 2015

[مقطوعة الرأس] الهيكل العظمي الأولي لمن مقطوع الرأس / عام /

إنشاء مخطط تفصيلي لواجهة برمجة التطبيقات بدون رؤوس في المستقبل.

هل يعمل ChromeDriver مع الإلكترون؟

ثنائي بدون رأس لا يتطلب xvfb سيفتح بيئات جديدة مثل AWS Lambda - سجلني!

Vanuan هل سمعت عن كابوس ؟ قد يساعدك ذلك إذا لم يكن هناك شيء تحتاجه على وجه التحديد من ChromeDriver.

هل يوجد بها سائق كابيبارا / سيلينيوم؟

+1

أنا مرتبك قليلاً. هل هناك وضع مقطوعة الرأس؟ هل يمكننا القيام بذلك بشكل فعال مع BrowserWindow ({show: false})؟ سيكون هذا مفيدًا جدًا بالنسبة لي ، فأنا أحاول تشغيل هذا حتى نتمكن من إنشاء مكونات ويب من جانب الخادم: https://github.com/scramjs/scram-markup-engine

أعتقد أنني أجبت على سؤالي كما كنت أنظر حولي. لا يدعم الإلكترون في الأصل وضع مقطوع الرأس معقد. يبدو أن Nightmare يسمح بشيء من هذا القبيل ، ولكن لا يزال يتعين عليك القيام ببعض التهيئة لجعله يعمل على أنظمة معينة بدون بيئة رسومية. يمكن لـ Electron أيضًا القيام بذلك إذا كنت تستخدم BrowserWindow ({show: false}) ، ولكن يجب عليك استخدام xvfb لتوفير بيئة رسومية على أنظمة Linux بدون رأس (والتي لا تبدو سيئة للغاية في الواقع). صححني إذا كنت مخطئًا ، وقم بإجراء +1 لهذه الميزة.

مع مشروع الكروم الجديد مقطوع الرأس [1] هل من الممكن جعل الإلكترون مقطوع الرأس بدون استخدام xvfb؟

أعتقد أن القيد الحالي كان مع libchromium؟ هل أصلح رجال الكروم ذلك؟

1: https://chromium.googlesource.com/chromium/src/+/master/headless/README.md

أي تقدم في هذا؟ سيكون هذا مفيدًا حقًا للاختبار

يعتبر الجزء / الكابوس مثاليًا لهذا الغرض. ببساطة:

const nightmare = Nightmare({
  show: true
});

amilajack بالنسبة للحالات البسيطة مثل إجراء اختبارات وحدة Mocha البسيطة بدون رأس ، سيكون Nightmare مثل استخدام مطرقة ثقيلة وزنها 20 رطلاً للقيادة في مسمار صغير (اقرأ: المبالغة الهائلة). إنها مكتبة مكتملة ومتكاملة تتضمن بطاريات لأتمتة المتصفح لا يمكنها فقط إجراء التنقل الأساسي والإدخال ، بل يمكنها أيضًا حفظ ملفات HTML و PDF على القرص أو التقاط لقطات شاشة. يجب أن يكون 0٪ بالضبط من هذه المكتبة ضروريًا لإجراء اختبارات وحدة بسيطة.

isiahmeadowsmcolyer قال انه يريد نسخة مقطوعة الرأس من ذرة قذيفة التي يمكن استخدامها كبديل. الإلكترون إلى حد كبير هو ذلك تمامًا مع ميزات إضافية.

أجل ، لكن لماذا تحتاج السكر لما لا تستخدمه؟ (كنت أشير إلى كل أنواع السكر - يمكنك نظريًا إعادة تطبيق Electron بالكامل باستخدام ارتباطات Vanilla Node + OpenGL).

حالة الاستخدام الأكثر شيوعًا للمتصفحات بدون رأس هي أشياء مثل ما يوجد بالفعل mocha-phantomjs و Karma - تشغيل اختبارات وحدة المتصفح من CLI. يستخدم معظم الأشخاص xvfb ، خادم X مقطوع الرأس ، على Travis إذا كانوا بحاجة إلى اختبار Firefox / Chrome ، لأن ذلك لا يحتوي على خادم X قيد التشغيل ، ويمكنك حتى تشغيل Electron مع ذلك ، ولكن المتصفحات بدون رأس مثل PhantomJS و SlimerJS لا تفعل ذلك. ر بحاجة إلى خادم X. لا يزال Electron + Nightmare بحاجة إلى خادم X من نوع ما (حتى لو كان xvfb) للتشغيل ، وهذه المشكلة تطالب بإزالة تلك التبعية ، ولكن على الأرجح لن تحدث حتى يصبح Chromium نفسه بلا رأس ويتم نشر هذه التغييرات إلى محتوى libchromium .

أصبح مقطوعة الرأس الآن في Chrome 59: https://www.chromestatus.com/features/5678767817097216

sindresorhuszcbenz هل سيحدث هذا التغيير في Chromium أي فرق هنا؟

الإلكترون رائع بالفعل ، ووضع مقطوعة الرأس سيجعله أفضل!

(سيكون مفيدًا أيضًا

لقد تمكنت من الحصول على Xvfb للعمل على lambda والذي قد يكون مفيدًا للاختبار القائم على lambda ... https://github.com/nisaacson/aws-lambda-xvfb

هل توجد أي كلمة حول متى ستدعم إلكترون مقطوعة الرأس الحقيقية؟ هل يمكننا الاعتماد على حدوث ذلك؟ لا استطيع الانتظار لإسقاط xvfb.

lastmjs هل تمكنت من تشغيل Electron على AWS Lambda استنادًا إلى xvfb؟

شكرا لتعليقك MrSaints. أنا بالفعل أقوم بتصحيح أخطاء هذا الريبو لعدة ساعات الآن لأنني لا أستطيع الحصول على nightmare للتشغيل. هل تعمل من أجلك؟

سيحصلzcbenz FYI chrome 59 على دعم وضع مقطوعة الرأس https://www.chromestatus.com/features/5678767817097216

schickling انظر https://github.com/JohannesHoppe/nightmare-html2pdf - كابوس في عامل ميناء ، مع Xvfb

شكرًا JohannesHoppe ، لقد عملت Nightmare في Docker مع Xvfb ولكني أريد تشغيله على AWS Lambda بدلاً من ذلك.

لقد فتحت مشكلة لاستبدال Electron بـ Chrome بدون رأس في Nightmare: https://github.com/segmentio/nightmare/issues/1092

أعتذر إذا تم الرد على هذا في مكان آخر ، لكن لا يمكنني العثور على إجابة محددة. في تعليقه المرتفع باستخدام 1+ أعلاه ، أشار sandstrom إلى أن مقطوعة الرأس متاحة الآن في Chrome 59.

هل دعم علم Chrome مقطوع الرأس في خارطة طريق تطوير Electron؟ يبدو أن هذا "فوز" ضخم محتمل للإلكترون لأنه يجعل الاستخدام الحقيقي بدون رأس ممكنًا.

أنا أتفق معrinogo. سيكون وجود خيار بدون رأس للإلكترون مفيدًا جدًا لإجراء الاختبارات في أنظمة ci وعلى صندوق dev دون الحاجة إلى شاشة افتراضية والاستيلاء على الجهاز. أنا مهتم أيضًا بمعرفة خارطة الطريق للمساهمة الإلكترونية والإمكانيات.

Xvfb مزعج ، سيكون رائعًا إذا دعم الإلكترون مقطوعة الرأس الحقيقية!

xvfb- ربما في هذه الأثناء

هناك مقال جديد من جوجل: https://developers.google.com/web/updates/2017/04/headless-chrome

قادم قريبا.

يبدو أن Chrome 59 موجود على القناة الثابتة الآن. ما هي الخطوات التالية لدعم مقطوعة الرأس في الإلكترون؟

من فضلك ، يرجى جعل هذا حقيقة - من خلال القيام بذلك وتمكين NightmareJS من تشغيل Electron بدون رأس ، فإنك في النهاية ستقضي مثل ثلث حالات استخدام السيلينيوم. *

* أن تكون زائديًا ولكن ليس كذلك حقًا

aendrew أعتقد أن NightmareJS يمكن أن يكون _rewritten_ لاستخدام / تضمين خلفية CDP بدلاً من ذلك ، بدلاً من الخلاف حول جعل Electron (بفلسفة: _ إنشاء تطبيقات سطح المكتب عبر النظام الأساسي _) بلا رأس. انظر: https://github.com/cyrus-and/chrome-remote-interface

MrSaints أنا لا أحسد

بغض النظر ، فإن النقطة المتعلقة بكون الإلكترون موجهًا إلى سطح المكتب هي فكرة جيدة.

MrSaintsaendrew في خطر بث جهلي ... ما مدى صعوبة هذا التغيير (دعم headless العلم) لتنفيذ؟ لست متأكدًا من كيفية تفاعل Electron مع Chromium / تمديده ، ولكن يبدو لي أن خطوات تنفيذ ذلك هي:

  1. قم بترقية Electron's Chromium إلى الإصدار 59+.
  2. قم بتوفير معلمة تكوين / علامة سطر الأوامر headless .
  3. أشياء أخرى من الواضح أنني لا أحسبها. :)

أعتقد أن ما أقوله هو ، مع توفر headless الآن في Chromium ، يبدو أن تنفيذ وضع مقطوعة الرأس (على سبيل المثال لـ NightmareJS) بسيط نسبيًا. من المؤكد أن إصدارًا للأغراض العامة من الإلكترون قد يستغرق بعض الوقت لتسوية حالات استخدام معينة. ومع ذلك ، لإنشاء تصميم مصمم لشيء مثل NightmareJS ، يجب أن يكون واضحًا جدًا ، أليس كذلك؟

إذا كانت لدي حاجة فورية لتحسين السرعة ، فسألتقطها وأخذ لقطة. ومع ذلك ، ما زلنا نتعامل مع NightmareJS كما هو ، لذلك نحن بخير في الوقت الحالي.

بغض النظر ، شكرًا للقائمين على كل هذه المشاريع لمساهماتهم وعملهم الجاد! :)

فيما يتعلق بـ NightmareJS: نحن نعمل حاليًا على إصدار من Nightmare مبني على Chrome بدون رأس حتى قادر على العمل في بيئات بدون خادم مثل AWS Lambda. سنفتح المصدر قريبًاgraphcool. 🚀

schickling هذا سيكون رائعًا!

شيء واحد يجب مراعاته مع --headless في الكروم هو أنه يعطل الدعم لجميع المكونات الإضافية. لذلك ، إذا كنت بحاجة إلى فلاش (يمكن تنفيذه باستخدام الإلكترون / الكابوس) أو عارض PDF ، وما إلى ذلك ، فإن --headless ليس مناسبًا لك وستريد استخدام xvfb.

لا أطيق الانتظار لتشغيل Electron في AWS Lambda ... على ما أعتقد

Amen @lastmjs Amen

ماذا عن هذا الحل؟
https://github.com/dimkir/nightmare-lambda-tutorial

لم أجربها حتى الآن رغم ذلك

يستخدم xplodedthemes إصدارًا مترجمًا مسبقًا من xvfb

المكونات الوقحة: https://github.com/joelgriffith/navalia. تم إنشاء هذا فوق Chrome بدون رأس لإجراء الاختبارات الوظيفية والمزيد. يتضمن بعض الميزات الرائعة مثل موازنة المهام المتعددة وواجهة GraphQL الأمامية والمزيد.

أرحب بأي علاقات عامة / مشاكل / ملاحظات!

مرحبا جميعا! آسف لجعلكم جميعا تنتظرون ... 💤

لقد قمنا للتو بفتح مصادر Chromeless . يعتمد على Chrome بدون رأس ويعمل محليًا وعلى AWS Lambda. واجهة برمجة التطبيقات تشبه إلى حد كبير NightmareJS.

يمكنك تجربتها هنا: https://chromeless.netlify.com

هل حل Chromeless محل Nightmare؟ لا يزال أمام Chromeless

نستخدمه كبديل لـ Nightmare لأننا نحتاج إلى القدرة على إجراء اختبارات متعددة في نفس الوقت.

سؤال (ربما ليس جيدًا لهذا الموضوع): هل تفكر في جعل وظيفة pdf تعمل؟ إذا كان الأمر كذلك ، فقد يوفر لنا ذلك الكثير من الصداع (والتكلفة).

واو ، هذا أمر لا يصدق. عمل جيد يا رفاق!

zcbenz يبدو أن الحلول قد ظهرت لهذا: هل من

أم أن هذه القضية لا تزال صالحة للغاية. تتضمن "الحلول" جميعًا التخلص من الكابوس تمامًا.

موافق تمامًا مع keithkml - الحلول ، على الرغم من حسن النية (شكرًا لك!) ، كانت تعليقي السابق ؟ (ومرة أخرى ، يرجى المعذرة على جهلي! :))

ما زلت لا أفهم النقطة في الردود. هل يمكن لأي شخص أن يعطيني توضيحًا مفاده أن لدينا وضع مقطوعة الرأس NATIVE لتطبيق الإلكترون ليتم تشغيله في CI أم لا؟

يحتويhitliubo Chrome على علامة --headless ، لكنه لا يعمل إلا إذا كنت لا تستخدم مكونات إضافية مثل Flash أو قارئ PDF. إذا كنت، ثم الجواب هو لا الإيجابي في الوقت الراهن. إذا لم تكن كذلك ، فيمكنك تمرير هذه العلامة (مع --disable-gpu إذا لزم الأمر - قاموا بإصلاح هذا التضمين المفقود في إصدارات Chrome الأحدث IIRC) عند إنشاء سياق المتصفح ومعرفة ما إذا كان ذلك يعمل. (لاحظ أنه إذا كنت تستخدم شيئًا مثل Nightmare ووقعت في الفئة الثانية ، فعليك حقًا تقديم مشكلة في الريبو الخاص بهذا المشروع إذا لم يكن هناك مشكلة بالفعل.)

حتى إذا لم تتمكن من استخدام --headless (أو إذا لم يعمل) ، فهناك خيارات:

  • Windows: ما لم تكن تستخدم شيئًا غامضًا ، فسيكون لديك دائمًا سياق نافذة لعرضه فيه. أسقط Windows Server 2016 دعم واجهة المستخدم الرسومية الافتراضي ، لكنه لا يزال يدعم إنشاء نوافذ واجهة المستخدم الرسومية ، ويجب أن يدعم AFAICT الحد الأدنى لاختبار السيلينيوم.
  • macOS: سيكون لديك دائمًا واجهة مستخدم رسومية هنا (وبالتالي يكون لديك سياق نافذة لعرضه فيه). لا تقدم Apple إصدارًا لا يوفر ذلك.
  • Linux: xvfb هو خادم X بدون رأس متاح لكل توزيعة Linux شائعة (وأعني "مشترك" بشكل فضفاض هنا). إذا كنت تستخدم Travis ، فلديهم تعليمات حول كيفية إضافته إلى مشروعك .

isiahmeadows شكرا لمعلوماتك. لدي حاليًا تطبيق ويب يعمل في المتصفح ومع chrome / Firefox يمكنني دائمًا إضافة - بدون رأس للاختبار بدون رأس. نرغب مؤخرًا في تحويله إلى تطبيق Electron وقد جربت - بدون رأس والذي لا يعمل في نظام macOS الخاص بي. الآن أعرف السبب اليك. شكرا!

في الواقع لا أحب الحل بواسطة xvfb لأنه ليس أصليًا. ومع ذلك ، نظرًا لأننا لا ندعم السكان الأصليين مقطوعة الرأس ، لذا أعتقد أنني بحاجة إلى تجربته.

لمعلوماتك - الآن أنا أستخدم كابيبارا للاختبار.

سيكون ذلك رائعًا (ص)

هل هناك أي تحديث على ذلك؟

تمت إعادة توجيهي هنا من منشور حول التقديم مباشرة إلى المخزن المؤقت لإطار Linux ، ولكن يبدو أن هذا يركز على الاختبار بدون رأس. هل تم إحراز أي تقدم في التقديم مباشرة إلى المخزن المؤقت للإطار _real_؟

quinn أنا متأكد من أنك ستحتاج إلى خادم X ، على الرغم من أنه يمكنك تشغيل X11 (Xorg) على مخزن مؤقت للإطارات إذا أردت (انظر: https://www.x.org/releases/current/ doc / man / man4 / fbdev.4.xhtml).

_يحرر:_

في الواقع بعد النظر في هذا الأمر أكثر قليلاً ، يمكن تحقيق ذلك أيضًا باستخدام الأوزون. (https://github.com/jakwu/ozone-fb)

ستسمح إضافة الأوزون أيضًا بدعم wayland ، وهي ميزة أخرى يفتقدها الإلكترون لرؤية غالبية توزيعات Linux قد انتقلت منذ ذلك الحين إلى هذا.

استنادًا إلى وصف تعليق ozone-fb و isiahmeadows ، يبدو أن تسريع GPU لا يعمل إذا تم عرضه على مخزن مؤقت للإطار.

trusktr هذا تعليق عمره سنتان. أوصي بعدم أخذ تعليقي على أنه موثوق ، حيث كان من الممكن أن يتغير (لم أتحقق من ذلك منذ ذلك الحين).

أقوم بإضافة lib مقطوع الرأس إلى الإلكترون واستدعاء HeadlessShellMain。
يركض:

e run  --headless --enable-logging --v=2 --disable-gpu --screenshot  http://192.168.50.206

ثم يظهر:

Running "/home/a/dev0/e9.2.1/src/out/ReleaseSym0/electron --headless --enable-logging --v=2 --disable-gpu --screenshot http://192.168.50.206:8889"
[1028/172650.483932:INFO:cpu_info.cc(53)] Available number of cores: 4
[1028/172650.484061:VERBOSE1:zygote_main_linux.cc(217)] ZygoteMain: initializing 0 fork delegates
[1028/172650.484400:INFO:cpu_info.cc(53)] Available number of cores: 4
[1028/172650.484465:VERBOSE1:zygote_main_linux.cc(217)] ZygoteMain: initializing 0 fork delegates
[1028/172650.493514:VERBOSE1:webrtc_internals.cc(119)] Could not get the download directory.
[1028/172650.494623:VERBOSE1:proxy_config_service_linux.cc(500)] All gsettings tests OK. Will get proxy config from gsettings.
[1028/172650.494764:VERBOSE1:proxy_config_service_linux.cc(1261)] Obtained proxy settings from annotation hash code 11258689
[1028/172650.494873:VERBOSE1:proxy_config_service_linux.cc(500)] All gsettings tests OK. Will get proxy config from gsettings.
[1028/172650.494919:VERBOSE1:proxy_config_service_linux.cc(1261)] Obtained proxy settings from annotation hash code 11258689
[1028/172650.504033:VERBOSE1:sandbox_linux.cc(69)] Activated seccomp-bpf sandbox for process type: renderer.
[1028/172650.505596:VERBOSE2:thread_state.cc(470)] [state:0x556bd75583a0] ScheduleGCIfNeeded
[1028/172650.511468:VERBOSE2:thread_state.cc(470)] [state:0x556bd75583a0] ScheduleGCIfNeeded
[1028/172650.524408:VERBOSE2:thread_state.cc(470)] [state:0x556bd75583a0] ScheduleGCIfNeeded
[1028/172650.524916:VERBOSE2:thread_state.cc(470)] [state:0x556bd75583a0] ScheduleGCIfNeeded
[1028/172650.525173:VERBOSE2:thread_state.cc(470)] [state:0x556bd75583a0] ScheduleGCIfNeeded
[1028/172650.525963:VERBOSE1:sandbox_linux.cc(69)] Activated seccomp-bpf sandbox for process type: gpu-process.
[1028/172650.526373:VERBOSE2:thread_state.cc(470)] [state:0x556bd75583a0] ScheduleGCIfNeeded
[1028/172650.528735:VERBOSE2:thread_state.cc(470)] [state:0x556bd75583a0] ScheduleGCIfNeeded
[1028/172650.531839:VERBOSE2:thread_state.cc(470)] [state:0x556bd75583a0] ScheduleGCIfNeeded
[1028/172650.535051:ERROR:paint_controller.cc(646)] PaintController::FinishCycle() completed
[1028/172650.550076:VERBOSE1:configured_proxy_resolution_service.cc(873)] PAC support disabled because there is no system implementation
[1028/172650.550312:VERBOSE1:configured_proxy_resolution_service.cc(873)] PAC support disabled because there is no system implementation
[1028/172650.550923:VERBOSE1:network_delegate.cc(32)] NetworkDelegate::NotifyBeforeURLRequest: http://192.168.50.206:8889/
[1028/172650.575829:VERBOSE1:url_loader.cc(418)] To buffer: http://192.168.50.206:8889/
[1028/172650.580122:VERBOSE1:v8_context_snapshot.cc(153)] A context is created from snapshot for main world
[1028/172650.587399:VERBOSE1:v8_context_snapshot.cc(153)] A context is created from snapshot for main world
[1028/172650.595294:ERROR:paint_controller.cc(646)] PaintController::FinishCycle() completed
[1028/172650.612295:ERROR:paint_controller.cc(646)] PaintController::FinishCycle() completed
[1028/172650.676553:INFO:headless_shell.cc(620)] Written to file screenshot.png.

هل هذا يعني أنه تم تنفيذ مقطوعة الرأس؟

@ bigben0123 هذا ممتع ومثير للغاية! هل جمعت نسختك الخاصة من الإلكترون بدمج غلاف مقطوع الرأس من الكروم؟

هل اختبرت في بيئة بدون X على Linux لترى ما إذا كانت تعمل؟

عند تشغيل الكروم في وضع بدون رأس ، تبدأ عمليات التقديم الفرعية بالعلامة التي تم تمريرها - بدون رأس (يمكنك أن ترى أن هذا هو استخدام "ps args" من الذاكرة). هل هذا يحدث لك؟

(الغريب في حالة الإلكترون حاليًا إذا حاولت البدء به - لا يتم تمرير العلم بدون رأس إلى عمليات التقديم ولكن يتم تمريره إلى عملية GPU.)

@ bigben0123 هذا ممتع ومثير للغاية! هل جمعت نسختك الخاصة من الإلكترون بدمج غلاف مقطوع الرأس من الكروم؟

هل اختبرت في بيئة بدون X على Linux لترى ما إذا كانت تعمل؟

عند تشغيل الكروم في وضع بدون رأس ، تبدأ عمليات التقديم الفرعية بالعلامة التي تم تمريرها - بدون رأس (يمكنك أن ترى أن هذا هو استخدام "ps args" من الذاكرة). هل هذا يحدث لك؟

(الغريب في حالة الإلكترون حاليًا إذا حاولت البدء به - لا يتم تمرير العلم بدون رأس إلى عمليات التقديم ولكن يتم تمريره إلى عملية GPU.)

نعم ، أقوم بتشغيله على ubuntu والذي يبدأ للتو في وضع أوامر المستخدم.
تم تمرير مقطوعة الرأس:

electron --headless --enable-logging --v=2 --disable-gpu -print-to-pdf http://www.google.com
electron --type=zygote --no-zygote-sandbox --enable-logging --headless --v=2 --headless
electron --type=zygote --enable-logging --headless --v=2 --headless
electron --type=zygote --enable-logging --headless --v=2 --headless
electron --type=gpu-process --field-trial-handle=15536072708541054845,15522400966085077738,131072 --enable-logging --headless --v=2 --headless --gpu-preferences=MAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAQAAAAAAAAAAAAAAAAAAAACAAAAAAAAAA= --use-gl=swiftshader-webgl --override-use-software-gl-for-tests --enable-logging --v=2 --shared-files
electron --type=utility --field-trial-handle=15536072708541054845,15522400966085077738,131072 --lang=en-US --service-sandbox-type=network --enable-logging --use-gl=swiftshader-webgl --v=2 --headless --enable-logging --v=2 --shared-files=v8_snapshot_data:100
electron --type=renderer --allow-pre-commit-input --enable-logging --v=2 --field-trial-handle=15536072708541054845,15522400966085077738,131072 --disable-databases --disable-gpu-compositing --lang=en-US --headless --lang=en-US --num-raster-threads=2 --enable-main-frame-before-activation --renderer-client-id=4 --shared-files=v8_snapshot_data:100
electron --type=broker

@ bigben0123 هل لديك تغييراتك في مكان ما؟ حتى لو لم يتم تحويله إلى جوهر الإلكترون لسبب ما ، فأنا أحب أن أتمكن من استخدامه.

هذا الالتزام يدمج فقط lib بدون رأس chrome إلى الإلكترون ويمكنك استخدامه بنفس الطريقة التي يستخدمها chrome.
https://github.com/bigben0123/electron/commit/b6cad8993d68d39f1732aa6ed5ece0135b9ae0c8

بقدر ما أشعر بالقلق ، يحتوي الكروم وعزل الرأس على تطبيق مختلف لطبقة المحتوى. مثل غلافين للمتصفح ، إذا بدأت بدون رأس فلا علاقة له بالكروم ، إلا أنك تبدأ بـ "chrome --headless".

الهدف من عدم وجود رأس هو "تقليل عدد التغييرات الغازية أو الخاصة بلا رأس (على سبيل المثال ، #ifdefs) إلى قاعدة رمز Chromium".

لذلك ، من الصعب تنفيذ أن الإلكترون مقطوع الرأس لإزالة xvfb. يمكننا فقط السماح للإلكترون بدعم مقطوعة الرأس ، لكن لا يمكنك تشغيل تطبيقات الإلكترون.

قد نستخدم تطبيق مقطوع الرأس لاستبدال الإلكترون للحصول على فرع جديد مقطوع الرأس.

إزالة الاعتماد من الإلكترون / BUILD.gn:

      "//ui/events/devices/x11",
      "//ui/events/platform/x11",
      "//ui/gtk"  #all of gkt related

    if (use_x11) {
      deps += [
        "//ui/gfx/x",
        "//ui/gtk:x",
      ]
    }
    configs += [ ":gio_unix" ]
    configs += [ "//build/config/linux:x11" ]

استبدل ب:
"// ui / display" ،
"// واجهة المستخدم / الأحداث / الأجهزة" ،

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات