البرمجة

تجنب Null Pointer Exception في Selenium.

المشكلة التي تواجهك تتمثل في استخدامك لمتغير driver بدون تهيئته بشكل صحيح. في البداية، قمت بتهيئة المتغير driver بقيمة null، ومن ثم حاولت استخدامه دون تهيئته بكائن من فئة ChromeDriver، مما أدى إلى حدوث استثناء “Null Pointer Exception”.

المشكلة تكمن في أنك قمت بتعريف المتغير driver بشكل محلي داخل الدالة launchBrowser ولكن لم تقم بإرجاعه من الدالة أو تهيئته بشكل عام داخل البرنامج الرئيسي. بالتالي، عند استدعاء الدالة launchBrowser وتم تمرير قيمة "CH" كمعامل، تقوم الدالة بإنشاء كائن ChromeDriver وتهيئته لكنها لا تعيده أو تخزنه في المتغير driver الذي تستخدمه في الجزء الرئيسي من برنامجك.

لحل هذه المشكلة، يمكنك إما تهيئة المتغير driver بشكل عام داخل الصنف والتأكد من تهيئته في الدالة launchBrowser وإعادتها ككائن من نوع WebDriver، أو يمكنك تخزين الكائن ChromeDriver المعين من داخل الدالة launchBrowser في متغير عالمي يمكنك استخدامه في الجزء الرئيسي من برنامجك.

في حالة اتخاذ الخيار الأول، يمكن أن يكون مثل الكود التالي:

java
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class ArrayLiist { static WebDriver driver; // تعريف المتغير كعام public static void main(String[] args) { launchBrowser("CH"); driver.findElement(By.id("user_login")).sendKeys("admin"); driver.findElement(By.id("user_pass")).sendKeys("demo123"); driver.findElement(By.id("wp-submit")).click(); } public static void launchBrowser(String bn) { if (bn.equals("CH")) { // استخدام equals للمقارنة بين السلاسل System.setProperty("webdriver.chrome.driver", "E:\\Selenium Downloaded\\chrome\\chromedriver.exe"); driver = new ChromeDriver(); // تهيئة المتغير بكائن من فئة ChromeDriver driver.get("http://demosite.center/wordpress/wp-admin/plugins.php"); } } }

أو يمكنك استخدام الخيار الثاني، وهو تعريف متغير عالمي داخل الصنف:

java
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class ArrayLiist { static WebDriver driver; // تعريف المتغير كعالمي public static void main(String[] args) { launchBrowser("CH"); driver.findElement(By.id("user_login")).sendKeys("admin"); driver.findElement(By.id("user_pass")).sendKeys("demo123"); driver.findElement(By.id("wp-submit")).click(); } public static void launchBrowser(String bn) { if (bn.equals("CH")) { System.setProperty("webdriver.chrome.driver", "E:\\Selenium Downloaded\\chrome\\chromedriver.exe"); driver = new ChromeDriver(); driver.get("http://demosite.center/wordpress/wp-admin/plugins.php"); } } }

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

المزيد من المعلومات

عند تطوير البرمجيات، يُعتبر العثور على استثناء “Null Pointer Exception” أمرًا شائعًا، ويمكن أن يكون مصدر إزعاج كبير للمطورين. في حالتك، تجد نفسك تواجه هذا الاستثناء في برنامج Selenium الخاص بك، وهو مشهور بتجريب واختبار تطبيقات الويب.

بعد مراجعة الشيفرة التي قدمتها، يتضح أن المشكلة تكمن في استخدام المتغير driver قبل تهيئته بشكل صحيح. حيث قمت بتعيين قيمته إلى null دون تهيئته بكائن من فئة ChromeDriver. هذا الأمر أدى إلى حدوث الاستثناء “Null Pointer Exception” عندما حاولت استخدام driver داخل الدالة main.

لحل هذه المشكلة، يجب عليك تهيئة المتغير driver بشكل صحيح قبل استخدامه. يمكنك ذلك بإما تهيئته مباشرة داخل الدالة main أو عن طريق استدعاء الدالة launchBrowser التي تقوم بإنشاء وتهيئة المتغير driver.

في الشيفرة التي قدمتها، قمت بتعيين المتغير driver محليًا داخل الدالة launchBrowser. ولكن لم يتم استخدامه بشكل صحيح بعد ذلك. لحل هذه المشكلة، يمكنك تعديل الشيفرة لتخزين المتغير driver كعالمي داخل الصنف. هذا سيتيح لك استخدامه بسهولة في جميع أنحاء البرنامج.

بعد إجراء التعديلات اللازمة، يجب أن يبدو الشيفرة كالتالي:

java
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class ArrayLiist { static WebDriver driver; // تعريف المتغير كعالمي public static void main(String[] args) { launchBrowser("CH"); driver.findElement(By.id("user_login")).sendKeys("admin"); driver.findElement(By.id("user_pass")).sendKeys("demo123"); driver.findElement(By.id("wp-submit")).click(); } public static void launchBrowser(String bn) { if (bn.equals("CH")) { System.setProperty("webdriver.chrome.driver", "E:\\Selenium Downloaded\\chrome\\chromedriver.exe"); driver = new ChromeDriver(); driver.get("http://demosite.center/wordpress/wp-admin/plugins.php"); } } }

باستخدام هذه الشيفرة، يجب أن تتمكن الآن من تشغيل برنامجك دون حدوث استثناء “Null Pointer Exception”. بمجرد تشغيل البرنامج، سيتم فتح متصفح Chrome وتسجيل الدخول إلى صفحة ووردبريس المعينة كما هو موضح في الشيفرة.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر