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

كيفية التعامل مع استثناءات "مرجع العنصر القديم" في السيلينيوم؟

تم النشر بتاريخ 2024-11-09
تصفح:506

How to Handle

مرجع العنصر القديم: الكشف عن السبب وإيجاد حل

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

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

driver.findElement(By.xpath(String.format(BenefitStatLi, i))).click();

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

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

try {
    // Attempt to click on the element
    driver.findElement(By.xpath(String.format(BenefitStatLi, i))).click();
} catch (org.openqa.selenium.StaleElementReferenceException ex) {
    // Element is not yet available, so wait and try again
    Thread.sleep(200); // Replace with appropriate wait time
    driver.findElement(By.xpath(String.format(BenefitStatLi, i))).click();
}

من خلال تقديم وقت انتظار قبل إعادة محاولة النقر، يمنح الكود DOM وقتًا كافيًا لتحقيق الاستقرار ويضمن أن العنصر موجود وقابل للنقر قبل المتابعة.

أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3