python_developer
1.54K subscribers
3.74K photos
1.97K videos
232 files
434 links
کانال اموزش پایتون @Real_developer
تبلیغات پذیرفته میشود.
Download Telegram
. از جمله این زبان‌ها می‌توان به «پایتون» (Python)، «روبی» (Ruby)، «جاوا» (Java)، «اسکالا» (Scala)، «پرل» (Perl)، «گرووی» (Groovy)، «پی‌اچ‌پی» (PHP) و «سی‌شارپ» (C#‎) اشاره کرد. این تست‌ها روی اغلب «مرورگرهای وب» (Web Browsers) مدرن، قابل اجرا هستند.
فریم ورک سلنیوم روی سیستم‌عامل‌های «لینوکس» (Linux)، «ویندوز» (Windows) و «مک‌اواس» (macOS) اجرا می‌شود. شایان توجه است که فریم ورک سلنیوم یک نرم‌افزار «متن‌باز» (Open Source) است که تحت گواهینامه آپاچی ۲.۰ منتشر می‌شود. سلنیوم از مولفه‌های (Components) گوناگونی تشکیل شده است که هر یک از آن‌ها نقش ویژه‌ای در توسعه خودکارسازی تست نرم‌افزارهای وب دارند. مولفه‌های چارچوب نرم‌افزاری سلنیوم در ادامه بیان شده‌اند.
محیط توسعه یکپارچه سلنیوم (Selenium IDE)

رابط برنامه‌نویسی کاربردی مخدوم سلنیوم (Selenium client API)

وب‌درایور سلنیوم (Selenium WebDriver)

کنترل از راه دور سلنیوم (Selenium Remote Control)

شبکه سلنیوم (Selenium Grid)

در بخش بعدی از مطلب آموزش ساخت ربات اینستاگرام با پایتون چگونگی خودکارسازی مرورگر با استفاده از چارچوب نرم‌افزاری سلنیوم آموزش داده شده است.
روش خودکارسازی مرورگر

برای این نسخه از ربات اینستاگرام، از سلنیوم استفاده شده است. شایان توجه است که ابزار اینستاپای (InstaPy) در دل خود از سلنیوم استفاده می‌کند. ابتدا، باید سلنیوم را نصب کرد. در طول نصب، باید اطمینان حاصل کرد که «وب‌درایور فایرفاکس» (Firefox WebDriver) نصب شده است. شایان توجه است که اینستاپای در نسخه آخر خود، دیگر از مرورگر وب کروم (Chrome) استفاده نمی‌کند. این به نوبه خود بدین معنا است که برای انجام این پروژه، فرد حتما باید مرورگر وب فایرفاکس (FireFox) را روی سیستم خود نصب داشته باشد. اکنون، باید یک فایل پایتون ساخته و کد زیر در آن نوشته شود
با اجرای کد بالا، می‌توان مشاهده کرد که مرورگر وب باز می‌شود و به صفحه ورود اینستاگرام می‌رود. در ادامه، توضیحات خط به خط پیرامون کد بالا ارائه شده است.
خط ۱ و ۲: sleep و webdriver وارد می‌شوند.

خط ۴: آماده‌سازی اولیه درایور فایرفاکس انجام و روی browser تنظیم می‌شود.

خط ۶: آدرس اینستاگرام را در نوار آدرس مرورگر نوشته و ورود (Enter) را می‌زند (آدرس نوشته شده را اعمال می‌کند).

خط ۸: به مدت پنج ثانیه منتظر می‌ماند، بنابراین، می‌توان نتایج را مشاهده کرد. در غیر این صورت، مرورگر را به صورت آنی می‌بندد.

خط ۱۰: مرورگر را می‌بندد.
آنچه نوشته شد، همان Hello World معروف زبان‌های برنامه‌نویسی، اما در دنیای سلنیوم و ویژه آن است. اکنون، می‌توان قطعه کد مربوط به قسمتی که موجب می‌شود برنامه در حساب کاربری فرد وارد شود را نوشت و به کد اصلی اضافه کرد. اما ابتدا، باید بررسی کرد که عامل انسانی در حالت عادی چگونه وارد حساب کاربری خود می‌شود. الگوریتم ساده این کار در ادامه آمده است.
به آدرس وب اینستاگرام می‌رود.

روی لینک ورود (Login) کلیک می‌کند.

اطلاعات هویتی خود شامل نام کاربری و رمز عبور را وارد می‌کند.

روی دکمه ورود (Login) کلیک می‌کند.

اولین گام بیان شده در روش انسانی ورود به اینستاگرام، در قطعه کد نوشته شده در بالا نیز انجام می‌شود. اکنون می‌توان کد بالا را به گونه‌ای تغییر داد که روی لینک ورود (Login) در صفحه خانگی اینستاگرام (Instagram Home Page) کلیک کند.
در ادامه، خط‌های کد جدید توضیح داده می‌شوند.

خط ۵: پنج ثانیه زمان انتظار ایجاد می‌کند. اگر سلنیوم نتواند یک عنصر (Element) را پیدا کند، برای مدت پنج ثانیه در انتظار می‌ماند تا امکان بارگذاری همه چیز فراهم شود و مجددا تلاش کند.

خط ۹: عنصر <a> را که متن آن معادل ورود یا همان Log in است پیدا می‌کند. در اینجا، این کار با استفاده از XPath انجام می‌شود؛ اما متدهای دیگری نیز وجود دارند که با استفاده از آن‌ها نیز می‌توان این کار را انجام داد.

خط ۱۰: روی عنصر <a> برای صفحه ورود (login) کلیک می‌کند.
با اجرای اسکریپت بالا، می‌توان خروجی آن را مشاهده کرد. این اسکریپت، مرورگر را باز می‌کند، به اینستاگرام می‌رود، روی دکمه ورود (Login) کلیک می‌کند و به صفحه ورود به اینستاگرام می‌رود. در صفحه ورود، سه عنصر مهم وجود دارد که عبارتند از:

بخش ورود نام کاربری

بخش ورود رمز عبور

دکمه ورود

اکنون باید اسکریپت را به گونه‌ای تغییر داد که این عناصر را پیدا کند، اطلاعات هویتی صاحب صفحه کاربری شامل نام کاربری و گذرواژه را وارد و روی دکمه ورود (Login) کلیک کند
در ادامه، توضیحاتی پیرامون خطوط کد تغییر یافته و جدید ارائه شده است.

خط ۱۲: برای ۲ ثانیه به خواب می‌رود تا امکان بارگذاری صفحه فراهم شود.

خطوط ۱۴ و ۱۵: ورودی‌های نام‌کاربری و رمز عبور را با استفاده از CSS پیدا می‌کند. کاربر می‌تواند از هر متد دیگری که ترجیح می‌دهد، برای انجام این کار استفاده کند.

خطوط ۱۷ و ۱۸: نام کاربری و رمز عبور را به ترتیب در محل ورود آن‌ها وارد می‌کند.

خط ۲۰: کلمه «Login» را با XPath پیدا می‌کند.

خط ۲۱: روی دکمه ورود کلیک می‌کند.
با اجرای این اسکریپت، به صورت خودکار وارد حساب کاربری اینستاگرام فرد می‌شود. اکنون زمان شروع کار جدی‌تر با ربات اینستاگرام رسیده است. ادامه فرایند نوشتن این اسکریپت و تکمیل آن نیز، مشابه آنچه است که تا این لحظه انجام شده است. در واقع، ربات (اسکریپت) در ادامه پست‌ها را پیمایش (Scroll)، مواردی که به آن‌ها علاقه دارد (بر اساس معیارهایی که به آن داده شده است) را پس از پیدا کردن دکمه «Like» لایک و پس از پیدا کردن جعبه درج نظر، لایک یا برای آن‌ها نظر درج می‌کند و به همین ترتیب ادامه می‌دهد. کلیه فعالیت‌های ذکر شده را می‌توان با استفاده از ابزار InstaPy انجام داد. اما پیش از استفاده از InstaPy باید با Page Object Pattern آشنا شد تا بهتر فهمید که InstaPy چگونه کار می‌کند. در بخش بعدی از مطلب آموزش ساخت ربات اینستاگرام با پایتون روش استفاده از Page Object Pattern بررسی می‌شود.
This media is not supported in your browser
VIEW IN TELEGRAM
روش استفاده از Page Object Pattern

پرسشی که در این مرحله باید به آن پاسخ داد این است که اکنون که کد ورود (Login) نوشته شد، چطور می‌توان یک تست برای آن نوشت؟ کد مربوط به این کار به صورت زیر است.
کد نوشته شده در بالا، یک خطای مهم دارد و آن خطا، عدم تبعیت از اصول «خودت را تکرار نکن» (Don’t Repeat Yourself | DRY) است. بر اساس این اصل که در برنامه‌نویسی وجود دارد، برنامه‌نویس نباید یک یا چند خط کد را در مکان‌های مختلف برنامه خود تکرار کند. در این راستا، برنامه‌نویسان معمولا از برنامه‌نویسی «تابعی» (Functional Programming) یا «شی‌گرا» (Object Oriented) استفاده می‌کنند. در قطعه کدهای ارائه شده تا این لحظه در مطلب آموزش ساخت ربات اینستاگرام با پایتون چند خط کد وجود دارد که هم در برنامه کاربردی و هم در کد تست تکرار شده است.
قرار دادن کدهای تکراری در پروژه‌ها در حالت کلی اتفاقی بد و منفی است و در پروژه مطلب آموزش ساخت ربات اینستاگرام با پایتون به طور ویژه‌ای بدتر محسوب می‌شود. زیرا کد سلنیوم به عناصر «رابط کاربری» (User Interface) وابسته است و عناصر رابط کاربری معمولا زیاد تغییر داده می‌شوند. هنگامی که عناصر رابط کاربری تغییر می‌کنند و نیاز به تغییر و به روز رسانی کد ایجاد می‌شود، بحث Page Object Pattern مطرح می‌شود.