ليش نبدأ بمكتبة QAcart قبل Selenium

مقال مجاني 5 دقيقة

مقدمة

شفت مقدمة مكتبة QAcart بالدرس السابق. وأنا متأكد إنه في سؤال براسك:

«أنا دفعت حتى أتعلّم Selenium. ما هذه المكتبة؟ ليش ما نبدأ بـ Selenium مباشرة؟»

سؤال محترم تماماً، ويستاهل جواب صريح. وهذا الدرس هو الجواب.

وخليني أبدأ بالتطمين: ستتعلّم Selenium كامل — 48 ساعة منه، من أول أمر لتصميم إطار عمل. هذه المكتبة مش بديل ولا اختصار. هي تحضير.


الأهداف التعليمية

بنهاية هذا الدرس، ستكون قادراً على:

  • تفهم ليش الترتيب هيك
  • تعرف ماذا سـتتعلّمه بهاد الجزء بالتحديد
  • تعرف كيف ستنتقل لـ Selenium
  • تعرف إذا كان مناسب إنك تتخطّى هذا الجزء

المشكلة: مهارتان مش وحدة

تعلّم الأتمتة فيه مهارتان مستقلتان تماماً:

1. تفكير الأتمتة

  • ما يستاهل يُأتمت وما لأ
  • كيف تصمّم اختبار مستقل ومركّز ونظيف
  • كيف تكتب Assertions تتحدث ما انكسر
  • كيف تكتب محددات لا تكسر بمجرد أن المصمم يغيّر لون
  • ليش الاختبارات بتتذبذب، وكيف تمنعه

2. أدوات Selenium

  • WebDriver و By و WebElement
  • WebDriverWait و ExpectedConditions
  • الإطارات والنوافذ والتنبيهات
  • StaleElementReferenceException و ElementNotInteractableException
مهم
والمشكلة إنه تعلّمهم مع بعض يضاعف الصعوبة — مش بيجمعها. تخيّل إنك تحاول تفهم ليش الاختبار لازم يكون مستقل، وانت بنفس اللحظة عمّال تحاول تفهم ليش StaleElementReferenceException تطلع. الدماغ لا يستطيع يتعلّم مفهومين جديدين بنفس اللحظة بكفاءة — يتعلّم واحد منهم سطحياً والثاني بالحفظ. والنتيجة التي بشوفها كل يوم: مؤتمت يعرف يكتب driver.findElement(...) ممتاز، لكن اختباراته متذبذبة ومربوطة ببعضها — لأنه تعلّم الأداة ولا تعلّم التفكير.

الحل: افصلهم

المكتبة تخفي الأدوات حتى تركّز على التفكير:

// بالمكتبة — سطر واحد، ولا انتظار ولا استثناءات
await page.getByTestId('login-submit').click();
// بـ Selenium — نفس الفعل، وثلاث مفاهيم جديدة
new WebDriverWait(driver, Duration.ofSeconds(10))
    .until(ExpectedConditions.elementToBeClickable(By.cssSelector("[data-test='login-submit']")))
    .click();

السطر الأول يجعلك تفكّر بـ "ما بدي أختبر". السطر الثاني يجعلك تفكّر بـ "كيف أخلي الأداة تشتغل".

نصيحة
بالأقسام الثلاثة الجاية، ستتعلّم أشياء ما إلها علاقة بأي أداة: - استراتيجية الـ Assertions (صارم مقابل مرن، ورسائل الفشل) - حالات اختبار ذرية ومركّزة ونظيفة - كتالوج التذبذب — عشرة أسباب وحلولهم - محددات العناصر وليش تكسر واستراتيجية data-test - Shift Left — متى يبدأ شغل المؤتمت ولا واحد من هؤلاء عن Selenium. كلهم عن الهندسة — وكلهم بينتقلوا معك لأي أداة تستخدمها بحياتك، Selenium أو Playwright أو أي شيء جاي بعد عشر سنين.

وليش مكتبتنا مش Playwright مباشرة؟

سؤال منطقي. والجواب: المكتبة مبنية على Playwright فعلياً — هي غلاف بسيط عليه.

فليش الغلاف؟ لتقليل الضجيج:

  • أسماء أوامر موحّدة وبسيطة
  • لا يوجد إعداد ولا تهيئة تشغلك
  • لا يوجد خيارات كثيرة تحتار بينها
  • التطبيق الذي نختبره مجهّز مسبقاً

كل هذا حتى يبقى شي واحد بتفكّر فيه: الاختبار نفسه.

معلومة
والفايدة الجانبية إنك بتخرج من الأقسام هذه وانت فاهم نموذج Playwright — وهذا بيعني إنه لو قرّرت بعد ذلك تتعلّم Playwright كأداة كاملة (وأنا أنصحك فيه)، تحتاج أسبوع مش شهر. لأنك فاهم كيف يفكّر، ولكن تحتاج تتعلّم الـ API.

كيف ستنتقل لـ Selenium؟

الانتقال مش قفزة — هو درس.

بالقسم السابع (أساسيات Selenium)، أول درس بعد المقدمة هو «من مكتبة QAcart إلى Selenium — جدول التحويل»، وفيه:

  • كل أمر تعلّمته ومقابله بـ Selenium
  • كل محدد ومقابله بـ By
  • الأربع فروقات الجوهرية اللي لازم تنتبهلها
  • الفخاخ الخمسة بأول أسبوع
مهم
يعني معرفتك لا تنرمي — بتنترجم. وأهم من هيك: ستدخل Selenium وانت تعرف لا تريد منه. تعرف إنك بحاجة انتظار (لأنك فهمت التذبذب)، وبحاجة محددات متينة (لأنك فهمت ليش تكسر)، وبحاجة اختبارات مستقلة (لأنك فهمت Atomic). بينما اللي يبدأ بـ Selenium مباشرة يتعلّم الأوامر أول، ويكتشف هذه الحاجات بعد أن يكتب مئة اختبار سيء.

الجدول الزمني بالأرقام

الجزء المدة النسبة
مكتبة QAcart (الأقسام 2-4) ~16 ساعة 33%
Selenium وتصميم الأطر ~32 ساعة 67%

ثلث الوقت للتفكير، وثلثان للأداة والأطر. ومعظم اللي بالثلث الأول ينتقل معك للثلثين.


طيب — أستطيع أتخطّى هذا الجزء؟

بصراحة: أه، إذا انطبق عليك الثلاثة:

  • ✅ عندك خبرة سنة أو أكثر بأتمتة الاختبار فعلياً
  • ✅ تعرف ما هي حالة اختبار ذرية ومركّزة وليش
  • ✅ قابلت اختبارات متذبذبة وشخّصت أسبابها بنفسك

وقتها روح للقسم الخامس (جافا) مباشرة.

تحذير
لكن إذا واحد من الثلاثة "لأ" — لا تتخطّى. والسبب مش إنك لن تفهم Selenium. ستفهمه. السبب إنك ستفهمه وتبني اختبارات سيئة بسرعة عالية — وهذا أسوأ من إنك تتعلّم أبطأ. وعلامة إنك محتاج هذا الجزء: إذا قرأت كلمة "Atomic" فوق وما كنت متأكد ما معناها بالأتمتة. هذه وحدها كافية.

خلاصة الدرس

  1. ستتعلّم Selenium كامل — 48 ساعة، من أول أمر لتصميم إطار. المكتبة تحضير مش بديل.

  2. في مهارتان مستقلتان: تفكير الأتمتة وأدوات Selenium.

  3. وتعلّمهم مع بعض يضاعف الصعوبة — الدماغ يتعلّم مفهوم جديد واحد بكفاءة، والثاني بالحفظ.

  4. والنتيجة الشائعة: مؤتمت يعرف الأوامر ممتاز واختباراته متذبذبة ومربوطة.

  5. الأقسام الثلاثة الجاية عن الهندسة مش عن أداة — والهندسة تنتقل لأي أداة جاية.

  6. المكتبة مبنية على Playwright — فبتخرج فاهم نموذجه، وتعلّمه بعد ذلك يأخذ أسبوع مش شهر.

  7. الانتقال درس مش قفزة — جدول تحويل كامل بالقسم السابع.

  8. وستدخل Selenium تعرف لا تريد منه — انتظار، ومحددات متينة، واستقلال.

  9. ثلث الوقت للتفكير، وثلثان للأداة — ومعظم الثلث ينتقل.

  10. تستطيع أن تتخطّى إذا عندك سنة خبرة فعلية — وإذا ما كنت متأكد ما معنى "Atomic"، فلا تتخطّى.


في الدرس الجاي: رح نبلش فعلياً — أمر الإغلاق (Close Command)، وأول سطر كود إلك بالكورس.

يلا، نلتقي بالدرس الجاي!