مرجع العنصر القديم: الكشف عن السبب وإيجاد حل
في السيلينيوم، قد تكون مواجهة استثناء "مرجع العنصر القديم" أمرًا محبطًا، لأنه يشير إلى أن العنصر المشار إليه لم يعد مرتبطًا بوثيقة الصفحة. يحدث هذا الخطأ غالبًا عندما يخضع 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