اتوماسیون مرورگر با Selenium و پایتون

اتوماسیون مرورگر با Selenium و پایتون

اتوماسیون مرورگر به معنای کنترل خودکار یک مرورگر وب از طریق کد است. این قابلیت در تست خودکار وب‌سایت‌ها، جمع‌آوری داده‌ها (وب اسکرپینگ)، و انجام وظایف تکراری بسیار مفید است. Selenium یک ابزار قدرتمند و محبوب برای اتوماسیون مرورگر است که از زبان‌های برنامه‌نویسی مختلفی از جمله پایتون پشتیبانی می‌کند. این مقاله به آموزش جامع Selenium با پایتون می‌پردازد.

پیش‌نیازها

قبل از شروع، اطمینان حاصل کنید که موارد زیر را دارید:

  • پایتون نصب شده باشد (نسخه 3.6 یا بالاتر توصیه می‌شود).
  • یک ویرایشگر کد (مانند VS Code، PyCharm یا Sublime Text).
  • مرورگر وب مورد نظر (Chrome، Firefox، Edge و غیره) نصب شده باشد.

نصب Selenium

برای نصب Selenium، از pip (مدیریت بسته پایتون) استفاده کنید:

pip install selenium

نصب WebDriver

Selenium به یک WebDriver نیاز دارد تا با مرورگر وب ارتباط برقرار کند. WebDriver یک رابط بین Selenium و مرورگر است. برای هر مرورگر، یک WebDriver جداگانه وجود دارد. در اینجا نحوه نصب WebDriver برای Chrome و Firefox آورده شده است:

Chrome WebDriver

  1. Chrome WebDriver را دانلود کنید.
  2. مطمئن شوید که نسخه WebDriver با نسخه Chrome شما سازگار است.
  3. WebDriver را در یک مسیر قابل دسترسی قرار دهید (مثلاً در پوشه پروژه خود یا در مسیر سیستم).

Firefox WebDriver (GeckoDriver)

  1. GeckoDriver را دانلود کنید.
  2. مطمئن شوید که نسخه GeckoDriver با نسخه Firefox شما سازگار است.
  3. GeckoDriver را در یک مسیر قابل دسترسی قرار دهید.

پیکربندی Selenium

پس از نصب Selenium و WebDriver، باید Selenium را برای استفاده از WebDriver پیکربندی کنید. این کار را با استفاده از کد پایتون انجام می‌دهید:

from selenium import webdriver

# برای Chrome
driver = webdriver.Chrome(executable_path='/path/to/chromedriver')

# برای Firefox
driver = webdriver.Firefox(executable_path='/path/to/geckodriver')

به جای `/path/to/chromedriver` و `/path/to/geckodriver`، مسیر واقعی WebDriver را وارد کنید.

عناصر وب

Selenium به شما امکان می‌دهد تا با عناصر مختلف یک صفحه وب تعامل داشته باشید. برخی از عناصر رایج عبارتند از:

  • تگ‌ها: مانند <p>، <h1>، <a>، <input> و غیره.
  • کلاس‌ها: برای گروه‌بندی عناصر با ویژگی‌های مشابه.
  • شناسه‌ها (IDs): برای شناسایی یک عنصر منحصر به فرد.
  • نام‌ها: برای شناسایی عناصر فرم.
  • XPath: یک زبان پرس و جو برای انتخاب عناصر بر اساس ساختار XML.
  • CSS Selector: یک زبان پرس و جو برای انتخاب عناصر بر اساس انتخابگرهای CSS.

یافتن عناصر

Selenium از روش‌های مختلفی برای یافتن عناصر در یک صفحه وب استفاده می‌کند:

# یافتن عنصر بر اساس ID
element = driver.find_element("id", "element_id")

# یافتن عنصر بر اساس نام
element = driver.find_element("name", "element_name")

# یافتن عنصر بر اساس کلاس
element = driver.find_element("class name", "element_class")

# یافتن عنصر بر اساس تگ
element = driver.find_element("tag name", "element_tag")

# یافتن عنصر بر اساس XPath
element = driver.find_element("xpath", "//div[@id='element_id']")

# یافتن عنصر بر اساس CSS Selector
element = driver.find_element("css selector", "#element_id")

اگر چندین عنصر با یک معیار مطابقت داشته باشند، از `find_elements` (با ‘s’ در انتها) استفاده کنید. این روش یک لیست از عناصر را برمی‌گرداند.

تعامل با عناصر

پس از یافتن یک عنصر، می‌توانید با آن تعامل داشته باشید:

  • کلیک کردن: element.click()
  • متن را دریافت کردن: element.text
  • مقدار را دریافت کردن (برای عناصر ورودی): element.get_attribute("value")
  • متن را وارد کردن (برای عناصر ورودی): element.send_keys("text")
  • بررسی وضعیت انتخاب (برای چک‌باکس‌ها و رادیو باتن‌ها): element.is_selected()
  • بررسی نمایش عنصر: element.is_displayed()

مثال کاربردی: ورود به یک وب‌سایت

در این مثال، نحوه ورود به یک وب‌سایت با استفاده از Selenium را نشان می‌دهیم:

from selenium import webdriver

driver = webdriver.Chrome(executable_path='/path/to/chromedriver')

driver.get("https://example.com/login")

username_field = driver.find_element("id", "username")
password_field = driver.find_element("id", "password")
login_button = driver.find_element("id", "login_button")

username_field.send_keys("your_username")
password_field.send_keys("your_password")

login_button.click()

# بررسی موفقیت ورود به سیستم (مثلاً با بررسی وجود یک عنصر خاص)
try:
    welcome_message = driver.find_element("id", "welcome_message")
    print("ورود به سیستم موفقیت‌آمیز بود!")
except:
    print("ورود به سیستم ناموفق بود.")

driver.quit()

به جای `”https://example.com/login”`، `”your_username”` و `”your_password”`، آدرس وب‌سایت، نام کاربری و رمز عبور واقعی را وارد کنید.

مدیریت پنجره مرورگر

Selenium به شما امکان می‌دهد تا اندازه و موقعیت پنجره مرورگر را مدیریت کنید:

  • بزرگ کردن پنجره: driver.maximize_window()
  • کوچک کردن پنجره: driver.minimize_window()
  • بستن پنجره: driver.close()
  • بستن تمام پنجره‌ها: driver.quit()
  • دریافت اندازه پنجره: driver.get_window_size()
  • تنظیم اندازه پنجره: driver.set_window_size(width, height)

انتظار (Waits)

گاهی اوقات، ممکن است لازم باشد تا منتظر بارگیری یک عنصر یا انجام یک عمل خاص در صفحه وب باشید. Selenium از دو نوع انتظار پشتیبانی می‌کند:

  • انتظار صریح (Explicit Wait): منتظر می‌ماند تا یک شرط خاص برقرار شود.
  • انتظار ضمنی (Implicit Wait): به Selenium می‌گوید که برای یک مدت زمان مشخص منتظر بماند تا عناصر پیدا شوند.
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# انتظار صریح
try:
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "element_id"))
    )
    print("عنصر پیدا شد!")
except:
    print("عنصر پیدا نشد.")

# انتظار ضمنی
driver.implicitly_wait(10)

جمع‌بندی

Selenium یک ابزار قدرتمند برای اتوماسیون مرورگر است که می‌تواند در تست خودکار، جمع‌آوری داده‌ها و انجام وظایف تکراری بسیار مفید باشد. با استفاده از Selenium و پایتون، می‌توانید به راحتی با صفحات وب تعامل داشته باشید و وظایف خود را به صورت خودکار انجام دهید. این مقاله یک مقدمه جامع برای Selenium با پایتون ارائه داد. برای یادگیری بیشتر، می‌توانید به مستندات Selenium مراجعه کنید و مثال‌های بیشتری را بررسی کنید.

بدون دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *