المشكلة التي تواجهك تتمثل في استخدامك لمتغير driver
بدون تهيئته بشكل صحيح. في البداية، قمت بتهيئة المتغير driver
بقيمة null
، ومن ثم حاولت استخدامه دون تهيئته بكائن من فئة ChromeDriver
، مما أدى إلى حدوث استثناء “Null Pointer Exception”.
المشكلة تكمن في أنك قمت بتعريف المتغير driver
بشكل محلي داخل الدالة launchBrowser
ولكن لم تقم بإرجاعه من الدالة أو تهيئته بشكل عام داخل البرنامج الرئيسي. بالتالي، عند استدعاء الدالة launchBrowser
وتم تمرير قيمة "CH"
كمعامل، تقوم الدالة بإنشاء كائن ChromeDriver
وتهيئته لكنها لا تعيده أو تخزنه في المتغير driver
الذي تستخدمه في الجزء الرئيسي من برنامجك.
لحل هذه المشكلة، يمكنك إما تهيئة المتغير driver
بشكل عام داخل الصنف والتأكد من تهيئته في الدالة launchBrowser
وإعادتها ككائن من نوع WebDriver
، أو يمكنك تخزين الكائن ChromeDriver
المعين من داخل الدالة launchBrowser
في متغير عالمي يمكنك استخدامه في الجزء الرئيسي من برنامجك.
في حالة اتخاذ الخيار الأول، يمكن أن يكون مثل الكود التالي:
javaimport 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");
}
}
}
أو يمكنك استخدام الخيار الثاني، وهو تعريف متغير عالمي داخل الصنف:
javaimport 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
كعالمي داخل الصنف. هذا سيتيح لك استخدامه بسهولة في جميع أنحاء البرنامج.
بعد إجراء التعديلات اللازمة، يجب أن يبدو الشيفرة كالتالي:
javaimport 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 وتسجيل الدخول إلى صفحة ووردبريس المعينة كما هو موضح في الشيفرة.