أصبح هذا المشروع ممكنًا بفضل المساهمين المتطوعين الذين خصصوا آلاف الساعات من وقتهم الخاص، وجعلوا كود المصدر متاحًا مجانًا بموجب ترخيص Apache 2.0.
تأتي صور Docker هذه مع مجموعة من العلامات لتبسيط استخدامها، يمكنك إلقاء نظرة عليها في أحد إصداراتنا.
للحصول على إشعارات بالإصدارات الجديدة، قم بإضافة نفسك كمراقب "الإصدارات فقط".
يتم نشر هذه الصور في سجل Docker Hub في Selenium Docker Hub.
هل تحتاج إلى مساعدة لاستخدام صور Docker هذه؟ تحدث إلينا على https://www.selenium.dev/support/
--shm-size="2g"docker run -d -p 4444:4444 -p 7900:7900 --shm-size= " 2g " selenium/standalone-firefox:4.26.0-20241101قم بتوجيه اختبارات WebDriver إلى http://localhost:4444
هذا كل شيء!
(اختياري) لمعرفة ما يحدث داخل الحاوية، توجه إلى http://localhost:7900/?autoconnect=1&resize=scale&password=secret.
لمزيد من التفاصيل حول تصور نشاط الحاوية، راجع قسم تصحيح الأخطاء.
☝️ عند تنفيذ docker run لصورة تحتوي على متصفح، يرجى استخدام العلامة --shm-size=2g لاستخدام الذاكرة المشتركة للمضيف.
☝️ استخدم دائمًا صورة Docker مع علامة كاملة لتثبيت متصفح معين وإصدار الشبكة. راجع اصطلاحات وضع العلامات للحصول على التفاصيل.
بدءًا من علامة الصورة المستندة إلى الإصدار 4.21.0 وما بعده، فإن البنيات التي يدعمها هذا المشروع هي كما يلي:
| بنيان | متاح |
|---|---|
| x86_64 (المعروف أيضًا باسم AMD64) | ✅ |
| aarch64 (ويعرف أيضًا باسم Arm64/armv8) | ✅ |
| أرمهف (ويعرف أيضًا باسم Arm32/armv7l) | ❌ |
المتصفحات التالية متوفرة في صور متعددة الأقواس:
| بنيان | الكروم | الكروم | فايرفوكس | حافة |
|---|---|---|---|---|
| x86_64 (المعروف أيضًا باسم AMD64) | ✅ | ✅ | ✅ | ✅ |
| aarch64 (ويعرف أيضًا باسم Arm64/armv8) | ❌ | ✅ | ✅ | ❌ |
| أرمهف (ويعرف أيضًا باسم Arm32/armv7l) | ❌ | ❌ | ❌ | ❌ |
ملحوظة:
لا تقوم Google بإنشاء Chrome ( google-chrome ) لمنصات Linux/ARM. ومن ثم، فإن صور Chrome (العقدة والمستقلة) متاحة فقط لـ AMD64. وبالمثل، لم تقم Microsoft بإنشاء Edge ( microsoft-edge ) لمنصات Linux/ARM.
لا يُنصح بتشغيل صورة AMD64 تحت المحاكاة على منصة ARM64 بسبب مشكلات الأداء والاستقرار.
بالنسبة لنظام التشغيل Linux/ARM، استخدم متصفح Chromium مفتوح المصدر. تتوفر صور Chromium (العقدة والمستقلة) بأقواس متعددة.
$ docker run --rm -it -p 4444:4444 -p 5900:5900 -p 7900:7900 --shm-size 2g selenium/standalone-chromium:latestيتم اختبار الصور متعددة الأقواس على CircleCI بفئة الموارد Linux/ARM64. انظر الحالة أدناه.
بالنسبة لصور حاوية عامل الإرساء التجريبية، التي تعمل على منصات مثل Apple M-series أو Raspberry Pi، يوفر المستودع الموجود في seleniumhq-community/docker-seleniarm الصور التي يتم نشرها في سجل Seleniarm Docker Hub.
راجع العدد رقم 1076 لمزيد من المعلومات حول هذه الصور.
الآن، تم دمج شوكة seleniumhq-community/docker-seleniarm.
نوصي بتمكين الميزة التجريبية لمخزن الصور المعبأ في Docker Engine. تتفهم containerd الصور متعددة المنصات، حيث يمكن أن تشير علامة صورة واحدة إلى متغيرات مختلفة تغطي نطاقًا واسعًا من أنظمة التشغيل وبنيات الأجهزة. إنه يبسط عملية إنشاء الصور وتخزينها وتوزيعها عبر منصات مختلفة.
أمر واحد لتمكين هذه الميزة في Docker Engine:
make set_containerd_image_storeلإنشاء كافة الصور لمنصات متعددة، قم بتشغيل الأمر التالي:
PLATFORMS=linux/amd64,linux/arm64 make buildلإنشاء الصور لمنصة معينة، قم بتشغيل الأمر التالي:
PLATFORMS=linux/arm64 make build افتراضيًا، بدون تحديد متغير PLATFORMS ، يتم إنشاء الصور لمنصة linux/amd64 .
يتم إنشاء الصور الليلية أعلى البنية الليلية في مشروع المنبع السيلينيوم مع أحدث التغييرات في الفرع الرئيسي في هذا المستودع. علامة الصورة nightly . لا ينصح باستخدام الصور في الإنتاج. إنه فقط لغرض الاختبار.
$ docker run -d -p 4442-4444:4442-4444 --name selenium-hub selenium/hub:nightlyتحقق من إنشاء عامل الإرساء للبدء في استخدام الصور الليلية docker-compose-v3-full-grid-nightly.yml
لإجراء الاختبارات أو العمل مع متصفحات ما قبل الإصدار، تحتفظ Google وMozilla وMicrosoft بقناة إصدار Dev وBeta لأولئك الذين يحتاجون إلى رؤية ما سيتم إصداره قريبًا لعامة السكان.
فيما يلي تعليمات تشغيلها في الوضع المستقل:
كروم بيتا:
$ docker run --rm -it -p 4444:4444 -p 7900:7900 --shm-size 2g selenium/standalone-chrome:betaتطوير كروم:
$ docker run --rm -it -p 4444:4444 -p 7900:7900 --shm-size 2g selenium/standalone-chrome:devفايرفوكس بيتا:
$ docker run --rm -it -p 4444:4444 -p 7900:7900 --shm-size 2g selenium/standalone-firefox:betaمطور فايرفوكس:
$ docker run --rm -it -p 4444:4444 -p 7900:7900 --shm-size 2g selenium/standalone-firefox:devالحافة التجريبية:
$ docker run --rm -it -p 4444:4444 -p 7900:7900 --shm-size 2g selenium/standalone-edge:betaتطوير الحافة:
$ docker run --rm -it -p 4444:4444 -p 7900:7900 --shm-size 2g selenium/standalone-edge:devdocker-compose-v3-beta-channel.yml:
# To execute this docker compose yml file use `docker compose -f docker-compose-v3-beta-channel.yml up`
# Add the `-d` flag at the end for detached execution
# To stop the execution, hit Ctrl+C, and then `docker compose -f docker-compose-v3-beta-channel.yml down`
version: " 3 "
services:
chrome:
image: selenium/node-chrome:beta
shm_size: 2gb
depends_on:
- selenium-hub
environment:
- SE_EVENT_BUS_HOST=selenium-hub
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
edge:
image: selenium/node-edge:beta
shm_size: 2gb
depends_on:
- selenium-hub
environment:
- SE_EVENT_BUS_HOST=selenium-hub
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
firefox:
image: selenium/node-firefox:beta
shm_size: 2gb
depends_on:
- selenium-hub
environment:
- SE_EVENT_BUS_HOST=selenium-hub
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
selenium-hub:
image: selenium/hub:latest
container_name: selenium-hub
ports:
- " 4442:4442 "
- " 4443:4443 "
- " 4444:4444 "docker-compose-v3-dev-channel.yml:
# To execute this docker compose yml file use `docker compose -f docker-compose-v3-dev-channel.yml up`
# Add the `-d` flag at the end for detached execution
# To stop the execution, hit Ctrl+C, and then `docker compose -f docker-compose-v3-dev-channel.yml down`
version: " 3 "
services:
chrome:
image: selenium/node-chrome:dev
shm_size: 2gb
depends_on:
- selenium-hub
environment:
- SE_EVENT_BUS_HOST=selenium-hub
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
edge:
image: selenium/node-edge:dev
shm_size: 2gb
depends_on:
- selenium-hub
environment:
- SE_EVENT_BUS_HOST=selenium-hub
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
firefox:
image: selenium/node-firefox:dev
shm_size: 2gb
depends_on:
- selenium-hub
environment:
- SE_EVENT_BUS_HOST=selenium-hub
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
selenium-hub:
image: selenium/hub:latest
container_name: selenium-hub
ports:
- " 4442:4442 "
- " 4443:4443 "
- " 4444:4444 "لمزيد من المعلومات حول صور حاوية قنوات Dev وBeta، راجع منشور المدونة على متصفحات قنوات Dev وBeta عبر Docker Selenium.
فايرفوكس
docker run -d -p 4444:4444 --shm-size= " 2g " selenium/standalone-firefox:4.26.0-20241101الكروم
docker run -d -p 4444:4444 --shm-size= " 2g " selenium/standalone-chrome:4.26.0-20241101حافة
docker run -d -p 4444:4444 --shm-size= " 2g " selenium/standalone-edge:4.26.0-20241101 ملاحظة: يمكن تشغيل حاوية مستقلة واحدة فقط على المنفذ 4444 في نفس الوقت.
هناك طرق مختلفة لتشغيل الصور وإنشاء شبكة ذات مركز وعقد، حدد الخيارات التالية.
سيتم إنشاء المحور والعقد في نفس الشبكة وسوف يتعرفون على بعضهم البعض من خلال اسم الحاوية الخاصة بهم. يجب إنشاء شبكة Docker كخطوة أولى.
$ docker network create grid
$ docker run -d -p 4442-4444:4442-4444 --net grid --name selenium-hub selenium/hub:4.26.0-20241101
$ docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub
--shm-size= " 2g "
-e SE_EVENT_BUS_PUBLISH_PORT=4442
-e SE_EVENT_BUS_SUBSCRIBE_PORT=4443
selenium/node-chrome:4.26.0-20241101
$ docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub
--shm-size= " 2g "
-e SE_EVENT_BUS_PUBLISH_PORT=4442
-e SE_EVENT_BUS_SUBSCRIBE_PORT=4443
selenium/node-edge:4.26.0-20241101
$ docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub
--shm-size= " 2g "
-e SE_EVENT_BUS_PUBLISH_PORT=4442
-e SE_EVENT_BUS_SUBSCRIBE_PORT=4443
selenium/node-firefox:4.26.0-20241101$ docker network create grid
$ docker run - d - p 4442 - 4444 : 4442 - 4444 -- net grid -- name selenium - hub selenium / hub: 4.26 . 0 - 20241101
$ docker run - d -- net grid - e SE_EVENT_BUS_HOST = selenium - hub `
-- shm - size = " 2g " `
- e SE_EVENT_BUS_PUBLISH_PORT = 4442 `
- e SE_EVENT_BUS_SUBSCRIBE_PORT = 4443 `
selenium / node - chrome: 4.26 . 0 - 20241101
$ docker run - d -- net grid - e SE_EVENT_BUS_HOST = selenium - hub `
-- shm - size = " 2g " `
- e SE_EVENT_BUS_PUBLISH_PORT = 4442 `
- e SE_EVENT_BUS_SUBSCRIBE_PORT = 4443 `
selenium / node - edge: 4.26 . 0 - 20241101
$ docker run - d -- net grid - e SE_EVENT_BUS_HOST = selenium - hub `
-- shm - size = " 2g " `
- e SE_EVENT_BUS_PUBLISH_PORT = 4442 `
- e SE_EVENT_BUS_SUBSCRIBE_PORT = 4443 `
selenium / node - firefox: 4.26 . 0 - 20241101عند الانتهاء من استخدام الشبكة، وخروج الحاويات، يمكن إزالة الشبكة باستخدام الأمر التالي:
# Removes the grid network
$ docker network rm gridسيتم إنشاء المحور والعقد على أجهزة/أجهزة افتراضية مختلفة، ويجب أن يعرفوا عناوين IP الخاصة ببعضهم البعض للتواصل بشكل صحيح. إذا كان سيتم تشغيل أكثر من عقدة واحدة على نفس الجهاز/الجهاز الظاهري، فيجب تكوينها لعرض منافذ مختلفة.
$ docker run -d -p 4442-4444:4442-4444 --name selenium-hub selenium/hub:4.26.0-20241101$ docker run -d -p 5555:5555
--shm-size= " 2g "
-e SE_EVENT_BUS_HOST= < ip-from-machine- 1>
-e SE_EVENT_BUS_PUBLISH_PORT=4442
-e SE_EVENT_BUS_SUBSCRIBE_PORT=4443
-e SE_NODE_HOST= < ip-from-machine- 2>
selenium/node-chrome:4.26.0-20241101$ docker run - d - p 5555 : 5555 `
-- shm - size = " 2g " `
- e SE_EVENT_BUS_HOST = < ip - from - machine - 1> `
- e SE_EVENT_BUS_PUBLISH_PORT = 4442 `
- e SE_EVENT_BUS_SUBSCRIBE_PORT = 4443 `
- e SE_NODE_HOST = < ip - from - machine - 2> `
selenium / node - chrome: 4.26 . 0 - 20241101 $ docker run -d -p 5555:5555
--shm-size= " 2g "
-e SE_EVENT_BUS_HOST= < ip-from-machine- 1>
-e SE_EVENT_BUS_PUBLISH_PORT=4442
-e SE_EVENT_BUS_SUBSCRIBE_PORT=4443
-e SE_NODE_HOST= < ip-from-machine- 3>
selenium/node-edge:4.26.0-20241101$ docker run - d - p 5555 : 5555 `
-- shm - size = " 2g " `
- e SE_EVENT_BUS_HOST = < ip - from - machine - 1> `
- e SE_EVENT_BUS_PUBLISH_PORT = 4442 `
- e SE_EVENT_BUS_SUBSCRIBE_PORT = 4443 `
- e SE_NODE_HOST = < ip - from - machine - 3> `
selenium / node - edge: 4.26 . 0 - 20241101 $ docker run -d -p 5555:5555
--shm-size= " 2g "
-e SE_EVENT_BUS_HOST= < ip-from-machine- 1>
-e SE_EVENT_BUS_PUBLISH_PORT=4442
-e SE_EVENT_BUS_SUBSCRIBE_PORT=4443
-e SE_NODE_HOST= < ip-from-machine- 4>
selenium/node-firefox:4.26.0-20241101$ docker run - d - p 5555 : 5555 `
-- shm - size = " 2g " `
- e SE_EVENT_BUS_HOST = < ip - from - machine - 1> `
- e SE_EVENT_BUS_PUBLISH_PORT = 4442 `
- e SE_EVENT_BUS_SUBSCRIBE_PORT = 4443 `
- e SE_NODE_HOST = < ip - from - machine - 4> `
selenium / node - firefox: 4.26 . 0 - 20241101 $ docker run -d -p 5556:5556
--shm-size= " 2g "
-e SE_EVENT_BUS_HOST= < ip-from-machine- 1>
-e SE_EVENT_BUS_PUBLISH_PORT=4442
-e SE_EVENT_BUS_SUBSCRIBE_PORT=4443
-e SE_NODE_HOST= < ip-from-machine- 4>
-e SE_NODE_PORT=5556
selenium/node-chrome:4.26.0-20241101$ docker run - d - p 5556 : 5556 `
-- shm - size = " 2g " `
- e SE_EVENT_BUS_HOST = < ip - from - machine - 1> `
- e SE_EVENT_BUS_PUBLISH_PORT = 4442 `
- e SE_EVENT_BUS_SUBSCRIBE_PORT = 4443 `
- e SE_NODE_HOST = < ip - from - machine - 4> `
- e SE_NODE_PORT = 5556 `
selenium / node - chrome: 4.26 . 0 - 20241101 يعد Docker Compose أبسط طريقة لبدء الشبكة. استخدم الموارد المرتبطة أدناه، واحفظها محليًا وتحقق من تعليمات التنفيذ أعلى كل ملف.
docker-compose-v2.yml
docker-compose-v3.yml
لإيقاف الشبكة وتنظيف الحاويات التي تم إنشاؤها، قم بتشغيل docker compose down .
docker-compose-v3-swarm.yml
من الممكن بدء شبكة السيلينيوم مع فصل جميع مكوناتها. للتبسيط، سيتم توفير مثال فقط باستخدام عامل الإرساء. احفظ الملف محليًا، وتحقق من تعليمات التنفيذ الموجودة فوقه.
docker-compose-v3-full-grid.yml
| متغير البيئة | خيار | يكتب | القيمة الافتراضية | وصف |
|---|---|---|---|---|
SE_REJECT_UNSUPPORTED_CAPS | --reject-unsupported-caps | منطقية | false | السماح للموزع برفض الطلب على الفور إذا كانت الشبكة لا تدعم القدرة المطلوبة. |
SE_HEALTHCHECK_INTERVAL | --healthcheck-interval | كثافة العمليات | 120 | وهذا يضمن أن الخادم يمكنه تنفيذ الأمر ping على جميع العقد بنجاح بعد فترة زمنية. |
يمكن تسجيل تنفيذ الاختبارات باستخدام صورة Docker selenium/video:ffmpeg-7.1-20241101 . هناك حاجة إلى حاوية واحدة لكل حاوية يتم تشغيل المتصفح فيها. هذا يعني أنه إذا كنت تقوم بتشغيل 5 عقد/حاويات مستقلة، فستحتاج إلى 5 حاويات فيديو، ويكون التعيين 1-1.
حاليًا، الطريقة الوحيدة للقيام بهذا التعيين هي يدويًا (إما بدء الحاويات يدويًا أو من خلال docker compose ). نحن نكرر هذه العملية وربما سيكون هذا الإعداد أكثر بساطة في المستقبل.
تعتمد صورة Video Docker التي نقدمها على صورة ffmpeg Ubuntu المقدمة من مشروع jrottenberg/ffmpeg، شكرًا لك على تقديم هذه الصورة وتبسيط عملنا؟
بدءًا من علامة الصورة المستندة إلى 4.20.0 وما بعده، تعتمد صورة Docker للفيديو على صورة FFmpeg Ubuntu المقدمة من مشروع linuxserver/docker-ffmpeg نظرًا لأن الصورة متاحة لمنصات متعددة. نشكرك على تبسيط مشروعنا ومساعدتنا على المضي قدمًا بدعم معماري متعدد.
ملحوظات :
/videos داخل حاوية الفيديو. قم بتعيين دليل محلي للحصول على مقاطع الفيديو.FILE_NAME لتجنب النتائج غير المتوقعة.يوضح هذا المثال كيفية بدء تشغيل الحاويات يدويًا:
$ docker network create grid
$ docker run -d -p 4444:4444 -p 6900:5900 --net grid --name selenium --shm-size= " 2g " selenium/standalone-chrome:4.26.0-20241101
$ docker run -d --net grid --name video -v /tmp/videos:/videos selenium/video:ffmpeg-7.1-20241101
# Run your tests
$ docker stop video && docker rm video
$ docker stop selenium && docker rm selenium بعد إيقاف الحاويات وإزالتها، من المفترض أن تشاهد ملف فيديو في دليل /tmp/videos بجهازك.
فيما يلي مثال باستخدام المحور وبعض العقد:
docker-compose-v3-video.yml
بناءً على دعم البيانات الوصفية في الاختبارات. عندما يتم نشر مسجل الفيديو الجانبي مع عقدة المتصفح مع تمكين SE_VIDEO_FILE_NAME=auto وإضافة بيانات التعريف إلى اختباراتك، فإن اسم ملف الفيديو سوف يستخرج قيمة الإمكانية se:name ويستخدمها كاسم ملف فيديو.
على سبيل المثال في ربط بايثون:
from selenium . webdriver . chrome . options import Options as ChromeOptions
from selenium import webdriver
options = ChromeOptions ()
options . set_capability ( 'se:name' , 'test_visit_basic_auth_secured_page (ChromeTests)' )
driver = webdriver . Remote ( options = options , command_executor = "http://localhost:4444" )
driver . get ( "https://selenium.dev" )
driver . quit () سيكون اسم ملف الفيديو الناتج هو test_visit_basic_auth_secured_page_ChromeTests_<sessionId>.mp4 .
إذا تمت معالجة اسم الاختبار الخاص بك بواسطة إطار عمل الاختبار، وكان فريدًا بالتأكيد، فيمكنك أيضًا تعطيل معرف الجلسة الملحق باسم ملف الفيديو عن طريق تعيين SE_VIDEO_FILE_NAME_SUFFIX=false .
سيتم اقتطاع اسم الملف إلى 255 حرفًا لتجنب أسماء الملفات الطويلة. علاوة على ذلك، سيتم استبدال حرف space بـ _ وسيتم الاحتفاظ فقط بالأحرف الهجائية والأرقام - (الواصلة) _ (الشرطة السفلية) في اسم الملف.
يمكن تخصيص التعبير العادي الخاص بالقطع عن طريق تعيين متغير البيئة SE_VIDEO_FILE_NAME_TRIM_REGEX . القيمة الافتراضية هي [:alnum:]-_ . يجب أن يكون التعبير العادي متوافقًا مع الأمر tr في bash.
على مستوى النشر، تكون حاوية المسجل في وضع التشغيل دائمًا. بالإضافة إلى ذلك، يمكنك تعطيل عملية تسجيل الفيديو عبر إمكانية الجلسة se:recordVideo . على سبيل المثال في ربط بايثون:
options . set_capability ( 'se:recordVideo' , False ) في حاوية المسجل، سيتم إجراء استعلام GraphQL في Hub استنادًا إلى Node SessionId واستخراج قيمة se:recordVideo في الإمكانات قبل اتخاذ قرار ببدء عملية تسجيل الفيديو أم لا.
ملاحظات: للوصول إلى نقطة نهاية GraphQL، تحتاج حاوية المُسجل إلى معرفة عنوان URL الخاص بـ Hub. يمكن تمرير عنوان URL الخاص بـ Hub عبر متغير البيئة SE_NODE_GRID_URL . على سبيل المثال SE_NODE_GRID_URL هو http://selenium-hub:4444 .
تم تثبيت RCLONE في صورة مسجل الفيديو. يمكنك استخدامه لتحميل مقاطع الفيديو إلى خدمة التخزين السحابية. إلى جانب تسجيل الفيديو المذكور أعلاه، يمكنك تمكين وظيفة التحميل عن طريق تعيين متغيرات البيئة التالية:
version : " 3 "
services :
chrome_video :
image : selenium/video:ffmpeg-7.1-20241101
depends_on :
- chrome
environment :
- DISPLAY_CONTAINER_NAME=chrome
- SE_VIDEO_FILE_NAME=auto
- SE_VIDEO_UPLOAD_ENABLED=true
- SE_UPLOAD_DESTINATION_PREFIX=s3://mybucket/path
- RCLONE_CONFIG_S3_TYPE=s3
- RCLONE_CONFIG_S3_PROVIDER=GCS
- RCLONE_CONFIG_S3_ENV_AUTH=true
- RCLONE_CONFIG_S3_REGION=asia-southeast1
- RCLONE_CONFIG_S3_LOCATION_CONSTRAINT=asia-southeast1
- RCLONE_CONFIG_S3_ACL=private
- RCLONE_CONFIG_S3_ACCESS_KEY_ID=xxx
- RCLONE_CONFIG_S3_SECRET_ACCESS_KEY=xxx
- RCLONE_CONFIG_S3_ENDPOINT=https://storage.googleapis.com
- RCLONE_CONFIG_S3_NO_CHECK_BUCKET=true SE_VIDEO_FILE_NAME=auto معرف الجلسة كاسم ملف الفيديو. وهذا يضمن أن اسم ملف الفيديو فريد للتحميل. يعمل إنشاء اسم ملف الفيديو تلقائيًا استنادًا إلى نقطة نهاية /status العقدة (ونقطة نهاية GraphQL الاختيارية) للحصول على معرف الجلسة وإمكانياتها.
SE_VIDEO_UPLOAD_ENABLED=true سيعمل على تمكين ميزة تحميل الفيديو. في الخلفية، سيتم إنشاء ملف توجيهي يحتوي على الملف والوجهة ليقوم القائم بالتحميل باستهلاكه والمتابعة.
SE_VIDEO_INTERNAL_UPLOAD=true سوف يستخدم RCLONE المثبت في الحاوية للتحميل. إذا كنت تريد استخدام حاوية جانبية أخرى للتحميل، فاضبطها على false .
| متغيرات ENV لكل وضع | المحور/العقد | أدوار مستقلة | الشبكة الديناميكية |
|---|---|---|---|
SE_VIDEO_RECORD_STANDALONE (إلزامي) | false (افتراضي) | true | true |
DISPLAY_CONTAINER_NAME (إلزامي) | إدخال المستخدم | إدخال المستخدم | (غير مطلوب) |
SE_NODE_PORT (اختياري) | 5555 | 4444 | (غير مطلوب) |
SE_NODE_GRID_URL (اختياري) | إدخال المستخدم | (غير مطلوب) | (غير مطلوب) |
بالنسبة لمتغيرات البيئة ذات البادئة RCLONE_ يتم استخدامها لتمرير التكوين عن بعد إلى RCLONE. يمكنك العثور على مزيد من المعلومات حول تكوين RCLONE هنا. عند الاستخدام في الشبكة الديناميكية، يجب دمج هذه المتغيرات مع البادئة SE_ ، على سبيل المثال SE_RCLONE_ . انظر المرجع أدناه لمزيد من التفاصيل.
تكوين تسجيل الفيديو وتحميله لـ Hub والعقد: docker-compose-v3-video-upload.yml
قم بتكوين تسجيل الفيديو وتحميله للأدوار المستقلة: docker-compose-v3-video-upload-standalone.yml
تكوين تسجيل الفيديو وتحميله لـ Dynamic Grid (node-docker): docker-compose-v3-video-upload-dynamic-grid.yml
تكوين تسجيل الفيديو وتحميله لـ Dynamic Grid المستقل (standalone-docker): الاختبارات/docker-compose-v3-test-standalone-docker.yaml
| متغير البيئة | القيمة الافتراضية | وصف |
|---|---|---|
SE_UPLOAD_RETAIN_LOCAL_FILE | false | احتفظ بالملف المحلي بعد التحميل بنجاح |
SE_UPLOAD_COMMAND | copy | يتم استخدام أمر RCLONE لنقل الملف. فرض move عندما يكون الاحتفاظ بالملف المحلي false |
SE_UPLOAD_OPTS | -P --cutoff-mode SOFT --metadata --inplace | يمكن تعيين خيارات أخرى تنتمي إلى أمر RCLONE. |
SE_UPLOAD_CONFIG_FILE_NAME | upload.conf | ملف التكوين للمضيف البعيد بدلاً من التعيين عبر بادئة متغير env SE_RCLONE_* |
SE_UPLOAD_CONFIG_DIRECTORY | /opt/bin | دليل ملف التكوين (قم بتغييره عند تثبيت ملف conf في دليل آخر) |
تتمتع Grid 4 بالقدرة على بدء تشغيل حاويات Docker عند الطلب، وهذا يعني أنها تبدأ حاوية Docker في الخلفية لكل طلب جلسة جديدة، ويتم تنفيذ الاختبار هناك، وعندما يكتمل الاختبار، يتم التخلص من الحاوية.
يمكن استخدام وضع التنفيذ هذا إما في الأدوار المستقلة أو العقدية. يجب إخبار وضع التنفيذ "الديناميكي" بصور Docker التي يجب استخدامها عند بدء تشغيل الحاويات. بالإضافة إلى ذلك، تحتاج الشبكة إلى معرفة URI الخاص ببرنامج Docker الخفي. يمكن وضع هذا التكوين في ملف toml محلي.
يمكنك حفظ هذا الملف محليًا وتسميته، على سبيل المثال، config.toml .
[ docker ]
# Configs have a mapping between the Docker image to use and the capabilities that need to be matched to
# start a container with the given image.
configs = [
" selenium/standalone-firefox:4.26.0-20241101 " , ' {"browserName": "firefox"} ' ,
" selenium/standalone-chrome:4.26.0-20241101 " , ' {"browserName": "chrome"} ' ,
" selenium/standalone-edge:4.26.0-20241101 " , ' {"browserName": "MicrosoftEdge"} '
]
host-config-keys = [ " Dns " , " DnsOptions " , " DnsSearch " , " ExtraHosts " , " Binds " ]
# URL for connecting to the docker daemon
# Most simple approach, leave it as http://127.0.0.1:2375, and mount /var/run/docker.sock.
# 127.0.0.1 is used because internally the container uses socat when /var/run/docker.sock is mounted
# If var/run/docker.sock is not mounted:
# Windows: make sure Docker Desktop exposes the daemon via tcp, and use http://host.docker.internal:2375.
# macOS: install socat and run the following command, socat -4 TCP-LISTEN:2375,fork UNIX-CONNECT:/var/run/docker.sock,
# then use http://host.docker.internal:2375.
# Linux: varies from machine to machine, please mount /var/run/docker.sock. If this does not work, please create an issue.
url = " http://127.0.0.1:2375 "
# Docker image used for video recording
video-image = " selenium/video:ffmpeg-7.1-20241101 "
# Uncomment the following section if you are running the node on a separate VM
# Fill out the placeholders with appr