Selenium WebDriver في خدمة المطور

فك تشفير تقرير Dmitry Kostichev مع Backend-قصص // إصدار الفيديو بالداخل

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


مرحبا جميعا. اسمي دميتري واليوم سوف أشارك تجربتي في استخدام السيلينيوم في تطوير Backend. ما الهدف من هذا؟ السيلنيوم مطلوب لأتمتة التفاعل مع بعض موارد الإنترنت ، من أجل تسوية العوامل البشرية التي تملأ بعض البيانات ، إلخ. بالنسبة للتطوير ، قد يكون هذا ضروريًا في مثل هذه الحالات ، على سبيل المثال ، عندما لا يكون هناك API على مورد الإنترنت وما إلى ذلك. وعلى مثال مشروعي ، كانت المهمة هي ملء بيانات العميل (قبل أن تضطر الخدمة إلى إعداد جميع المعلومات بشكل صحيح) وتسجيلها على هذا الموقع ، في هذه الحالة MasterCard.



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

في النهاية ، ما هو السيلينيوم وكيف يتم التعامل معه؟ يتكون مشروع Selenium من مكتبة تتواصل مع واجهة برنامج تشغيل الويب لمتصفح معين. تظهر قائمة بالمكتبات والمتصفحات المتاحة على الشريحة. والآن سأوضح كيف يعمل تقريبًا في مشروعي.

شاهد تسجيل شاشة أو فيديو مفصل في نهاية المنشور.

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

كيف تطبخ كل هذا؟ تحتوي مكتبة Selenium على أوامر أساسية مثل:

  • إنشاء برنامج تشغيل مثيل الويب لمتصفح معين ؛
  • نقرات الروابط ؛
  • العمل مع العناصر: النقرات ، إلخ.

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

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



نحن نبحث عن عناصر حسب نموذج DOM لصفحة HTML بواسطة محددات مثل xpath و css وغيرها. الاختلافات الرئيسية بينهما ، على سبيل المثال بين xpath و css ، هي أن xpath يمكن أن يذهب "عميق" ، وكذلك صعودا وهبوطا. و css ، على العكس من ذلك ، هو فقط أسفل. أي أن هذه هي المحددات الأكثر استخدامًا.



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

في الواقع ، يبدو تفاعل الصفحة شيئًا كهذا ، فهي معالجة بيانات خطية إلى حد ما. في هذه الحالة ، قسمت إلى خطوات - انتقالات إلى صفحات. هذا هو المكان الذي يتم فيه تعبئة البيانات وتنزيلها مباشرة عن طريق الملفات. من حيث المبدأ ، كل شيء بسيط للغاية. هذا ما تبدو عليه فئة PageGject ، تذكرنا تمامًا بـ DTO. نقوم ببساطة بوصف العناصر ، على سبيل المثال ، هنا في الحالة الحالية لـ PCSS Selectum. هذه هي بنية سيلينيد.



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

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



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



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

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

في النهاية ، كم أصبح الأمر أسهل؟ يبدو لي أنني تمكنت من حل مشكلة التفاعل مع هذا الموقع بشكل أسرع بكثير مما لو كنت أعرف كود js. أي ، لفهم السيلينيوم والتفاعل يمكن أن يكون أسرع من حقيقة أن البيانات يتم ترميزها وليس من المعروف كيفية تحويلها مرة أخرى. الشيء الرئيسي هو السرعة في التنمية.

تقرير بالفيديو - من 16.30


All Articles