مشكلة في مكتبة selenuim

أقوم بالتعلم مؤخرا على بايثون و خصوصا مجال الأتمتة و أحاول أن أضغط على زر معين في صفحة الواب لكن يظهرلي العديد من المشاكل و هذا الكود الخاص بي

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("www.google.com")

try:
    button = driver.find_element_by_xpath("//buttonid='submit'")
    button.click()
    print("تم النقر على الزر بنجاح!")
except Exception as e:
    print("حدث خطأ أثناء محاولة النقر على الزر:", e)
driver.quit()


يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

مرحبا صابر،

المشكلة لديك في تحديث المكتبة، أعتقد أنك تستخدم آخر تحديث من المكتبة إلا أن الكود الذي لديك من التحديث القديم، لذا قم بتحديث الكود لديك ليصبح بالشكل التالي:

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("www.google.com")
try:
    button = driver.find_element(By.XPATH"//buttonid='submit'")
    button.click()
    print("تم النقر على الزر بنجاح!")
except Exception as e:
    print("حدث خطأ أثناء محاولة النقر على الزر:", e)
driver.quit()

و المشكلة بالضبط كانت في سطر

button = driver.find_element_by_xpath("//buttonid='submit'")

و الأصح أن تكون هكذا:

button = driver.find_element(By.XPATH"//buttonid='submit'")

بالتوفيق إن شاء الله.

في الإصدار الحديث من المكتبة عليك استخدام ميثود find_element للعثور على عنصر في صفحة الويب بالشكل التالي:

driver.find_elements(By.XPATH, '//button')

ولتحديد أكثر دقة استخدم:

driver.find_element(By.XPATH, '//button[text()="Some text"]')

حيث أنّ [text()="Some text"] هو شرط يحدد أننا نريد العثور على زر يحتوي على النص "Some text" في داخله.

وبالطبع كما تعلم // يشير إلى أننا نريد البحث عن العنصر في أي مكان في شجرة DOM (Document Object Model) لصفحة الويب.

وستجد تفصيل أكثر هنا عند محدد By.XPATH وعند المُحددات الأخرى:

حيث ستجد أن جميع المحددات selectores يتم كتابتها داخل الميثود مثل التالي:

content = driver.find_element(By.CLASS_NAME, 'content')