كيفية البحث عن العنصر بالنص باستخدام السيلينيوم

How Find Element Text With Selenium



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

في هذه المقالة ، سأوضح لك كيفية تحديد موقع العناصر واختيارها من صفحات الويب باستخدام نص في السيلينيوم مع مكتبة Selenium python. لذلك دعونا نبدأ.







المتطلبات الأساسية:

لتجربة أوامر وأمثلة هذه المقالة ، يجب أن يكون لديك:



  1. توزيع Linux (يفضل Ubuntu) مثبت على جهاز الكمبيوتر الخاص بك.
  2. تم تثبيت Python 3 على جهاز الكمبيوتر الخاص بك.
  3. تم تثبيت PIP 3 على جهاز الكمبيوتر الخاص بك.
  4. بايثون فيرتالينف حزمة مثبتة على جهاز الكمبيوتر الخاص بك.
  5. Mozilla Firefox أو متصفحات الويب Google Chrome مثبتة على جهاز الكمبيوتر الخاص بك.
  6. يجب أن تعرف كيفية تثبيت Firefox Gecko Driver أو Chrome Web Driver.

لاستيفاء المتطلبات 4 و 5 و 6 ، اقرأ مقالتي مقدمة عن السيلينيوم في بايثون 3 .



يمكنك العثور على العديد من المقالات حول الموضوعات الأخرى على LinuxHint.com . تأكد من التحقق منها إذا كنت بحاجة إلى أي مساعدة.





إعداد دليل المشروع:

للحفاظ على كل شيء منظمًا ، قم بإنشاء دليل مشروع جديد تحديد نص السيلينيوم / على النحو التالي:

$مكدير -pvتحديد نص السيلينيوم/السائقين



انتقل إلى تحديد نص السيلينيوم / دليل المشروع على النحو التالي:

$قرص مضغوطتحديد نص السيلينيوم/

قم بإنشاء بيئة افتراضية Python في دليل المشروع على النحو التالي:

$Virtualenv .venv

تفعيل البيئة الافتراضية كالتالي:

$مصدر.venv/صباحا/تفعيل

قم بتثبيت مكتبة Selenium Python باستخدام PIP3 على النحو التالي:

$ pip3 قم بتثبيت السيلينيوم

قم بتنزيل وتثبيت جميع برامج تشغيل الويب المطلوبة في ملف السائقين/ دليل المشروع. لقد شرحت عملية تنزيل برامج تشغيل الويب وتثبيتها في مقالتي مقدمة عن السيلينيوم في بايثون 3 .

البحث عن العناصر بالنص:

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

سأبدأ بأبسط مثال لاختيار عناصر صفحة الويب بالنص ، واختيار الروابط من صفحة الويب.

في صفحة تسجيل الدخول الخاصة بـ facebook.com ، لدينا رابط هل نسيت الحساب؟ كما ترى في الصورة أدناه. دعنا نحدد هذا الارتباط مع السيلينيوم.

قم بإنشاء برنامج نصي جديد من لغة بايثون ex01.py واكتب سطور الرموز التالية فيه.

من عندالسيلينيوميستوردwebdriver
من عندالسيلينيوم.webdriver.مشترك.مفاتيح يستوردمفاتيح
من عندالسيلينيوم.webdriver.مشترك.بواسطة يستوردبواسطة
من عند زمن يستوردنايم
المتصفح=webdriver.كروم(قابل للتنفيذ='./drivers/chromedriver')
المتصفح.احصل على('https://www.facebook.com/')
نسيت الحساب=المتصفح.find_element(بواسطة.XPATHو '
// * [text () = 'هل نسيت الحساب؟'] '
)
نسيت الحساب.Send_keys(مفاتيح.أدخل)

بمجرد الانتهاء ، احفظ ملف ex01.py نص بايثون.

يستورد السطر 1-4 جميع المكونات المطلوبة في برنامج Python.

الخط 6 يخلق كروم المتصفح كائن باستخدام chromedriver ثنائي من السائقين/ دليل المشروع.

يخبر السطر 8 المتصفح بتحميل موقع الويب facebook.com.

يجد السطر 10 الرابط الذي يحتوي على النص هل نسيت الحساب؟ استخدام محدد XPath. لذلك ، لقد استخدمت محدد XPath // * [text () = 'هل نسيت الحساب؟'] .

يبدأ محدد XPath بـ // ، مما يعني أن العنصر يمكن أن يكون في أي مكان بالصفحة. ال * يخبر الرمز السيلينيوم بتحديد أي علامة ( إلى أو ص أو فترة، إلخ) يطابق الشرط الموجود داخل الأقواس المربعة [] . هنا ، الشرط ، نص العنصر يساوي هل نسيت الحساب؟

ال نص() تستخدم وظيفة XPath للحصول على نص عنصر.

على سبيل المثال، نص() عائدات مرحبا بالعالم إذا حدد عنصر HTML التالي.

< إلى href='http://dummysite.com'>مرحبا بالعالم</ إلى >

يرسل السطر 11 ملف اضغط على مفتاح هل نسيت الحساب؟ وصلة.

قم بتشغيل نص بايثون ex01.py بالأمر التالي:

$ python ex01.السنة التحضيرية

كما ترى ، يبحث مستعرض الويب عن ملف مفتاح على هل نسيت الحساب؟ وصلة.

ال هل نسيت الحساب؟ الرابط يأخذ المتصفح إلى الصفحة التالية.

بنفس الطريقة ، يمكنك بسهولة البحث عن العناصر التي لها قيمة السمة التي تريدها.

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

قم بإنشاء برنامج نصي جديد من لغة بايثون ex02.py واكتب سطور الرموز التالية فيه.

من عندالسيلينيوميستوردwebdriver
من عندالسيلينيوم.webdriver.مشترك.مفاتيح يستوردمفاتيح
من عندالسيلينيوم.webdriver.مشترك.بواسطة يستوردبواسطة
من عند زمن يستوردنايم
المتصفح=webdriver.كروم(قابل للتنفيذ='./drivers/chromedriver')
المتصفح.احصل على('https://www.facebook.com/')
نايم(5)
البريد الإلكتروني=المتصفح.find_element(بواسطة.XPATHو '// input [@ id = 'email'] ')
إدخال كلمة المرور=المتصفح.find_element(بواسطة.XPATHو '// input [@ id =' pass ']')
تسجيل الدخول=المتصفح.find_element(بواسطة.XPATHو '// * [@ value =' تسجيل الدخول ']')
البريد الإلكترونيSend_keys('[بريد إلكتروني محمي]')
نايم(5)
إدخال كلمة المرور.Send_keys('مرور سري')
نايم(5)
تسجيل الدخولSend_keys(مفاتيح.أدخل)

بمجرد الانتهاء ، احفظ ملف ex02.py نص بايثون.

يستورد السطر 1-4 جميع المكونات المطلوبة.

الخط 6 يخلق كروم المتصفح كائن باستخدام chromedriver ثنائي من السائقين/ دليل المشروع.

يخبر السطر 8 المتصفح بتحميل موقع الويب facebook.com.

كل شيء يحدث بسرعة بمجرد تشغيل البرنامج النصي. لذلك ، لقد استخدمت ملف نايم() تعمل عدة مرات في ex02.py لتأخير أوامر المتصفح. بهذه الطريقة ، يمكنك مراقبة كيفية عمل كل شيء.

يجد السطر 11 مربع نص إدخال البريد الإلكتروني ويخزن مرجعًا للعنصر في ملف البريد الإلكتروني عامل.

يجد السطر 12 مربع نص إدخال البريد الإلكتروني ويخزن مرجعًا للعنصر في ملف البريد الإلكتروني عامل.

يجد السطر 13 عنصر الإدخال الذي له السمة القيمة من تسجيل دخول باستخدام محدد XPath. لذلك ، لقد استخدمت محدد XPath // * [@ value = 'تسجيل الدخول'] .

يبدأ محدد XPath بـ // . هذا يعني أن العنصر يمكن أن يكون في أي مكان على الصفحة. ال * يخبر الرمز السيلينيوم بتحديد أي علامة ( إدخال أو ص أو فترة، إلخ) يطابق الشرط الموجود داخل الأقواس المربعة [] . هنا ، الشرط هو سمة العنصر القيمة يساوي تسجيل دخول .

يرسل السطر 15 الإدخال[البريد الإلكتروني محمي]إلى مربع نص إدخال البريد الإلكتروني ، ويؤخر السطر 16 العملية التالية.

يرسل السطر 18 تمرير الإدخال السري إلى مربع نص إدخال كلمة المرور ، بينما يؤخر السطر 19 العملية التالية.

يرسل السطر 21 ملف اضغط على مفتاح إلى زر تسجيل الدخول.

قم بتشغيل ex02.py نص Python بالأمر التالي:

$ python3 ex02.السنة التحضيرية

كما ترى ، تمتلئ مربعات نص البريد الإلكتروني وكلمة المرور بقيمنا الوهمية و تسجيل دخول يتم الضغط على الزر.

ثم تنتقل الصفحة إلى الصفحة التالية.

البحث عن العناصر بنص جزئي:

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

في المثال ، ex01.py ، لقد بحثت عن عنصر الارتباط الذي يحتوي على النص هل نسيت الحساب؟ . يمكنك البحث في نفس عنصر الارتباط باستخدام نص جزئي مثل نسيت القس . للقيام بذلك ، يمكنك استخدام ملف يحتوي على() وظيفة XPath ، كما هو موضح في السطر 10 من ex03.py . باقي الرموز هي نفسها في ex01.py . ستكون النتائج هي نفسها.

في السطر 10 من ex03.py ، استخدم شرط الاختيار ملف يحتوي على (مصدر ، نص) وظيفة XPath. تأخذ هذه الوظيفة وسيطتين ، مصدر، و نص .

ال يحتوي على() تتحقق الوظيفة مما إذا كان ملف نص المعطى في الوسيطة الثانية يتطابق جزئيًا مع مصدر القيمة في الوسيطة الأولى.

يمكن أن يكون المصدر هو نص العنصر ( نص() ) أو قيمة سمة العنصر ( attr_name ).

في ex03.py ، يتم فحص نص العنصر.

وظيفة XPath المفيدة الأخرى للعثور على عناصر من صفحة الويب باستخدام نص جزئي هي يبدأ بـ (المصدر ، النص) . هذه الوظيفة لها نفس الحجج مثل يحتوي على() وظيفة وتستخدم بنفس الطريقة. الاختلاف الوحيد هو أن ملف ابدا ب() تتحقق الوظيفة مما إذا كانت الوسيطة الثانية نص هي سلسلة البداية للمعامل الأول مصدر .

لقد أعدت كتابة المثال ex03.py للبحث عن العنصر الذي يبدأ النص به نسي، كما ترى في السطر 10 من ex04.py . النتيجة هي نفسها كما في ex02 و ex03.py .

أنا أيضا أعدت كتابته ex02.py بحيث يبحث عن عنصر الإدخال الذي من أجله القيمة تبدأ السمة بـ سجل، كما ترى في السطر 13 من ex05.py . النتيجة هي نفسها كما في ex02.py .

استنتاج:

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