البرمجة

حلول لمشاكل Python Selenium

يبدو أن الكود الذي قدمته يحتوي على بعض الأخطاء التي تمنعه من العمل بشكل صحيح. دعني أشرح لك الأخطاء وأقترح التعديلات اللازمة:

  1. في البداية، يجب تعيين القيم الخاصة بـ”passFieldID” و”fbLogoXpath”.
  2. في الدالة “test_Login”، يبدو أنك قمت بتحديد المتغير بشكل غير صحيح. بدلاً من “passFieldID”، يجب استخدام “passFieldElement”.
  3. الاستدعاء الخاطئ لدالة “WebDriverWait”، يجب استخدام القوسين () بدلاً من الأقواس [].
  4. قد يكون هناك خطأ في عنوان XPath لـ”fbLogoXpath”.

إليك الكود بعد التعديلات:

python
from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC import unittest class LoginTest(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() self.driver.get("https://www.facebook.com/") def test_Login(self): driver = self.driver facebookUsername = "[email protected]" facebookPassword = "basabasa" emailFieldID = "email" passFieldID = "pass" loginButtonXpath = "//input[@value= 'Log In']" fbLogoXpath = "//a[contains(@href , 'logo')]" emailFieldElement = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, emailFieldID))) passwordFieldElement = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, passFieldID))) loginButtonElement = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, loginButtonXpath))) emailFieldElement.clear() emailFieldElement.send_keys(facebookUsername) passwordFieldElement.clear() passwordFieldElement.send_keys(facebookPassword) loginButtonElement.click() WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, fbLogoXpath))) def tearDown(self): self.driver.quit() if __name__ == '__main__': unittest.main()

بعد التعديلات، يجب أن يقوم الكود بفتح موقع Facebook وتعبئة حقول البريد الإلكتروني وكلمة المرور ومن ثم النقر على زر تسجيل الدخول. كما يتأكد من وجود الشعار الخاص بـ Facebook بنجاح.

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

بالطبع، سأقوم بتكملة المقال لتوضيح المزيد حول كيفية عمل الكود المعدل وبعض النصائح لحل مشاكل شائعة في بيئة Selenium.

بعد التعديلات التي قمنا بها في الكود، يتوقع أن يعمل الكود بشكلٍ صحيح الآن. ولكن من المهم فهم بعض النقاط الأساسية حول كيفية عمل Selenium وكيفية تجنب الأخطاء المشتركة.

أولاً، دعنا نفهم بعض الدوال التي استخدمناها في الكود:

  1. WebDriverWait(driver, timeout).until(): هذه الدالة تستخدم للانتظار حتى يتم اكتشاف عنصر معين في صفحة الويب. يتم تحديد المدة الزمنية المسموح بها للانتظار والعنصر الذي نبحث عنه. في حالة عدم اكتشاف العنصر خلال المدة الزمنية المحددة، فإنها ستثير استثناء TimeoutException.

  2. EC.presence_of_element_located((By.ID, id)): هذه دالة تُعطى للـ WebDriverWait لتحديد أن العنصر موجود في الصفحة بناءً على محددات معينة مثل الـ ID في هذه الحالة.

  3. EC.element_to_be_clickable((By.XPATH, xpath)): هذه الدالة تُستخدم للتأكد من أن العنصر الذي نريد النقر عليه جاهز للنقر. إذا كان موجودًا ومُنشطًا ويمكن النقر عليه، فإنها تُرجع True، وإلا فإنها تنتظر حتى يكون العنصر جاهزًا.

ثانياً، يجب أن نتأكد من تفعيل وحدة WebDriver في Python لكي يتمكن الكود من التفاعل مع المتصفح. يمكن تنزيلها بسهولة باستخدام مدير الحزم pip:

bash
pip install selenium

ثالثاً، يُنصح بتحديث متصفح Selenium (مثل ChromeDriver أو GeckoDriver) للتأكد من توافقه مع إصدار المتصفح الذي تستخدمه.

رابعاً، يُوصى بتجربة كل سطر بشكل فردي في بيئة تطوير محلية قبل تنفيذ البرنامج بأكمله. هذا يساعد في تحديد الأخطاء وتصحيحها بسهولة.

خامساً، لضمان عمل الكود بشكلٍ صحيح، تأكد من مطابقة محددات العناصر مثل ID و XPath مع عناصر الصفحة الفعلية.

سادساً، يمكن استخدام وحدة التحكم في المتصفح (DevTools) لفحص العناصر وتحديد محدداتها بشكل دقيق.

بعد تطبيق هذه النصائح وفهم كيفية عمل Selenium بشكل أفضل، يجب أن تتمكن من تنفيذ الكود بنجاح وتجاوز أي مشاكل تواجهها في مستقبلك في تطوير تطبيقات الويب باستخدام Selenium.

اتمنى لك التوفيق في رحلتك التعلمية مع Python وSelenium!

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

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

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

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