سؤال

أنا أتعلم كيفية استخدام السيلينيوم في python وأحاول تعديل أ css نمط على http://www.google.com. على سبيل المثال ، <span class="gbts"> ....</span> في تلك الصفحة. أود تعديل gbts صف دراسي.

browser.execute_script("q = document.getElementById('gbts');" + "q.style.border = '1px solid red';")

هل هناك طريقة API تسمى getElementByClass('gbts') ?

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

المحلول

أنت تسأل عن كيفية الحصول على عنصر من فئة CSS باستخدام JavaScript. لا علاقة للسيلينيوم حقًا.

بغض النظر ، لديك بعض الخيارات. يمكنك أولاً الاستيلاء على العنصر باستخدام السيلينيوم (إذن هنا ، نعم ، السيلينيوم ذو صلة):

element = driver.find_element_by_class_name("gbts")

مع الإشارة إلى هذا العنصر بالفعل ، من السهل جدًا إعطائه حدود:

driver.execute_script("arguments[0].style.border = '1px solid red';")

(لاحظ ال arguments[0])

إذا كان يجب عليك حقًا استخدام JavaScript و JavaScript بمفردك ، فأنت محدود للغاية. هذا لأنه لا يوجد getElementByClassName وظيفة داخل جافا سكريبت. فقط getElementsByClassName مما يعني أنه سيعود قائمة من العناصر التي تتطابق مع فئة معينة.

لذلك يجب أن تستهدف العنصر على وجه التحديد العنصر الموجود في القائمة ، الذي يتم إرجاعه ، تريد التغيير. إذا أردت تغيير الأول حتما العنصر الذي كان له فئة من gbts, ، كنت سأفعل:

driver.execute_script("document.getElementsByClassName('gbts')[0].style.border = '1px solid red';")

أود أن أقترح عليك أن تذهب للخيار الأول ، مما يعني أن لديك السيلينيوم يقوم بالساق من أجلك.

نصائح أخرى

خيار JavaScript آخر نقي الذي قد تجده يمنحك المزيد من المرونة هو الاستخدام document.querySelector().

لن يقوم تلقائيًا بتحديد العنصر الأول من النتائج المحددة لك ، ولكن أيضًا قل أن لديك عناصر متعددة تحمل اسم الفئة هذا ، ولكنك تعلم أن هناك عنصرًا واحدًا فقط مع اسم الفئة هذا داخل عنصر الوالدين ، يمكنك تقييده البحث إلى هذا العنصر الوالد ، على سبيل المثال document.querySelector("#parent-div .gbts").

انظر (وثائق موزيلا) لمزيد من المعلومات.

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