سؤال

أنا أستخدم Selenium RC لأتمتة بعض عمليات المتصفح ولكني أريد أن يكون المتصفح غير مرئي.هل هذا ممكن؟كيف؟ماذا عن شبكة السيلينيوم؟هل يمكنني إخفاء نافذة Selenium RC أيضًا؟

هل كانت مفيدة؟

المحلول

هناك عدد قليل من الخيارات:

  • يمكنك استخدام Selenium Grid بحيث يتم فتح المتصفح على جهاز مختلف تمامًا (أو جهاز افتراضي) يمكنك بعد ذلك الاتصال به عبر VNC أو Remote Desktop Connection إذا كنت تريد رؤية المتصفح.وأيضا خيار آخر:إذا قمت بتشغيل عملية Jenkins الأمامية على ذلك الخادم البعيد، فيمكنها تنفيذ مشروع الاختبار الخاص بك على سطح المكتب.

  • يمكنك تشغيل السيلينيوم "مقطوعة الرأس" على Linux في XVFB.لم أحاول أبدًا القيام بذلك وأشك في أنه يستحق هذا الجهد حقًا. http://www.alittlemadness.com/2008/03/05/running-selenium-headless/

  • يمكنك تغليف Selenium RC في خدمة Windows. http://support.microsoft.com/kb/137890 .باستثناء أن قيود الأذونات المفروضة على الإصدارات الأحدث من النوافذ ربما تمنع السيلينيوم من الوصول إلى سطح المكتب مثل نظام التشغيل Windows 2000 الذي سمح لنا بذلك.

  • هناك خيار آخر يتمثل في استخدام شيء مثل WebDriver HTMLUnitDriver، الذي لا يقوم بتشغيل متصفح "حقيقي". http://code.google.com/p/webdriver/ .يوجد أيضًا خيار PhantomJS بالإضافة إلى "Chrome بدون رأس" الذي يمكنك استخدامه.

  • بالطبع هناك أيضًا خيار استخدام خدمة مثل SauceLabs، حيث يمكنك إجراء اختباراتك في السحابة.بعد الانتهاء من الاختبارات الخاصة بك، يمكنك مشاهدة مقطع فيديو لها قيد التشغيل.

نصائح أخرى

في لينكس، يمكنك تشغيل WebDriver في (الظاهري) عرض مقطوعة الرأس لإخفاء المتصفح. ويمكن القيام بذلك مع Xvfb (X مخزن الإطار المؤقت الظاهري).

ويمكنك التحكم Xvfb مباشرة من التعليمات البرمجية بايثون باستخدام xvfbwrapper: https://github.com/cgoldberg/xvfbwrapper

وسوف كود بايثون لتشغيل مقطوعة الرأس تبدو هذه:

from selenium import webdriver
from xvfbwrapper import Xvfb

display = Xvfb()
display.start()

# now Firefox will run in a virtual display. 
# you will not see the browser.
driver = webdriver.Firefox()
driver.get('http://www.google.com')

print(driver.title)
driver.quit()

display.stop()

تثبيت الاعتماد على ديبيان / أوبونتو:

$ sudo apt-get install xvfb
$ pip install xvfbwrapper

وتمكنت بسهولة لإخفاء نافذة المتصفح.

تثبيت PhantomJS . ثم، تغيير هذا السطر:

driver = webdriver.Firefox()

إلى:

driver = webdriver.PhantomJS()

وسوف تبقى من التعليمات البرمجية لا تحتاج إلى تغيير ولن متصفح فتح. لأغراض التصحيح، استخدم driver.save_screenshot('screen.png') في خطوات مختلفة من التعليمات البرمجية.

و+1 لالسيلينيوم RC كخدمة النوافذ.

لوجود اختبارات بتشغيل مخفية تماما، وأعتقد أن لم يكن لديك حلول الكثير إذا كنت على النوافذ.

وماذا كنت تفعل ذلك لتكريس جهاز كمبيوتر في الشبكة المحلية الخاصة بك لتكون على الانترنت في كل وقت والحصول على السيلينيوم RC الخادم التوالي. لذلك يمكنك استخدام IP ذلك الكمبيوتر بدلا من المضيف المحلي لتشغيل الاختبارات الخاصة بك. على سبيل المثال:

browser = selenium("10.15.12.34",4444,"*firefox","http://saucelabs.com")

و(باعتبار أن هذا هو الملكية الفكرية للكمبيوتر الذي يشغل الخادم).

وبعد أن الإعداد، يمكنك تشغيل الاختبارات الخاصة بك في الكمبيوتر الذي والمتصفحات وإطار ملقم RC هي في كمبيوتر آخر وتعود للك مرة واحدة القيام به.

في لينكس، يمكنك تشغيل اختبار المتصفح الخاص بك على شاشة الظاهري. وسوف تحتاج إلى حزمة xvfb لإنشاء ملقم X الظاهري. على توزيعات ديبيان القائم، فقط تشغيل

sudo apt-get install xvfb

وهناك أداة لطيفة ephemeral-x.sh التي من شأنها أن تحدد بسهولة ما يصل أي أمر لتشغيل على العرض الظاهري. تحميله وجعله قابل للتنفيذ:

wget https://raw.github.com/jordansissel/xdotool/master/t/ephemeral-x.sh
chmod +x ephemeral-x.sh

وبعد ذلك يمكنك ببساطة استخدامه لبدء الملقم السيلينيوم:

./ephemeral-x.sh java -jar selenium-standalone.jar

جميع نوافذ المتصفح التي أنشأتها السيلينيوم والآن تستخدم العرض الظاهري وسوف تكون غير مرئية لك.

إذا كنت تستخدم نظام التشغيل Windows، فهناك خيار واحد هو القيام بذلك قم بإجراء الاختبارات ضمن حساب مستخدم مختلف.وهذا يعني أن المتصفح وخادم جافا لن يكونا مرئيين لحسابك الخاص.

وهذه هي الطريقة التي أركض بلدي التجارب مع مخضرم على سطح المكتب لينكس (أوبونتو). حصلت سئمت عدم القدرة على العمل مع webdriver فايرفوكس تتخذ دائما التركيز.

وأنا ركبت xvfb

<اقتباس فقرة>   

وxvfb المدى -a mvn تثبيت نظيف

وهذا كل شيء

في كثير PhantomJS الحالات لا تناسب تماما الاحتياجات الخاصة بك، وأود أن وضع على خيار الكروم مقطوعة الرأس المذكورة في الجواب ديف هانت.

والكروم 57 قد بدأت للتو هذه الميزة. يمكنك استخدامه عن طريق تمرير العلم --headless عبر ChromeDriver، لمزيد من المعلومات انظر النقاش في <لأ href = "https://stackoverflow.com/questions/16180428/can-selenium-webdriver-open-browser-windows- بصمت، في الخلفية؟ noredirect = 1 & LQ = 1 "> هذا السؤال

وهناك مشروع يتعلق PhantomJS دعا GhostDriver ، كان من المفترض أن تشغيل PhantomJS الحالات في الشبكة السيلينيوم باستخدام webdriver بروتوكول سلك JSON. ربما كان هذا هو ما كنت أبحث عنه، على الرغم من أن هذا السؤال هو 4 سنوات الآن.

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

curl -k https://gist.githubusercontent.com/terrancesnyder/995250/raw/cdd1f52353bb614a5a016c2e8e77a2afb718f3c3/ephemeral-x.sh -o ~/ephemeral-x.sh
chmod +x ~/ephemeral-x.sh
~/ephemeral-x.sh TestsStarterCommand

وبالمناسبة هذه هي ميزة التي يحتاجها أي مطور تشغيل E2E أن منطقيا سوف تفرخ المتصفحات. في بيئة تطوير وهو أمر مزعج للتعامل مع النافذة التي تبقي ظهرت والتي التي يمكنك التفاعل عن طريق الخطأ مما يجعل اختبار تفشل.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top