كيفية تجنب خطأ ElementNotVisibleException في Selenium
لمعالجة هذا الخطأ “ElementNotVisibleException” الذي يظهر عند محاولة النقر على عنصر من القائمة المنسدلة، يجب التأكد من أن العنصر المراد النقر عليه مرئيًا على الصفحة. قد يكون السبب في عدم ظهور العنصر هو عدم تحميل الصفحة بشكل كامل قبل محاولة النقر على العنصر.
يمكنك تجربة استخدام انتظار ظهور العنصر قبل محاولة النقر عليه باستخدام الكود التالي:
-
أدوات تطوير الويب: مفاتيح النجاح والابتكار21/01/2024
-
جلب رؤوس الطلبات باستخدام Selenium في Python05/04/2024
pythonfrom selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(br, 10) # انتظار حتى 10 ثواني
element = wait.until(EC.visibility_of_element_located((By.XPATH, "//*[@id='dwfrm_adyenencrypted_expiryMonth']/option[@value='04']")))
element.click()
في هذا الكود، يتم استخدام WebDriverWait
للانتظار حتى يصبح العنصر مرئيًا، ثم يتم النقر عليه. تأكد من تغيير ال XPath ليتناسب مع المسار الصحيح للعنصر على صفحتك.
كما يمكنك تحسين XPath الذي تستخدمه ليكون أكثر دقة ولا يعتمد على ترتيب العناصر في الصفحة.
المزيد من المعلومات
الخطأ “ElementNotVisibleException” يحدث عندما يكون العنصر الذي تحاول النقر عليه غير مرئي على الصفحة، وهذا قد يحدث لعدة أسباب. قد يكون العنصر غير مرئي بسبب عوامل تتعلق بتصميم الصفحة، مثل استخدام CSS لإخفاء العنصر أو تحويله إلى موضع آخر خارج النطاق المرئي.
يمكنك استخدام أداة مطوري المتصفح (مثل مفتاح F12 في Chrome) لفحص عناصر الصفحة والتأكد من رؤية العنصر المناسب. قم بالتأكد من أن ال XPath الذي تستخدمه يؤدي إلى العنصر المطلوب بدقة، وتأكد من عدم وجود أي تحويلات أو عوامل تجعل العنصر غير مرئي.
إذا كانت المشكلة لا تزال مستمرة، قم بمراجعة العنصر والاطلاع على خصائصه للتحقق من وجود أي تداخلات أو أسباب أخرى تجعله غير مرئي. يمكن أيضًا استخدام أوامر تصحيح الأخطاء في Selenium مثل driver.page_source
لعرض محتوى الصفحة والتحقق من وجود العنصر المطلوب في الشكل الصحيح.
إذا استمرت المشكلة، فقد تحتاج إلى مراجعة التصميم الخاص بالصفحة أو استخدام تقنيات أخرى مثل JavaScript لتفادي المشكلة والتأكد من أن العنصر مرئي قبل النقر عليه.