سیلینیم کے ساتھ پیج لوڈ ہونے کا انتظار کیسے کریں۔

How Wait Page Load With Selenium



سیلینیم ویب ڈرائیور کے ساتھ ویب آٹومیشن یا ویب سکریپنگ کے دوران ، آپ کو مسائل کا سامنا کرنا پڑ سکتا ہے جیسے آپ جس عنصر کو منتخب کرنا چاہتے ہیں وہ دستیاب نہیں ہے یا جس بٹن کو آپ دبانا چاہتے ہیں وہ کلک کرنے کے لیے تیار نہیں ہے وغیرہ۔

اس کے ہونے کی وجہ یہ ہے کہ سیلینیم ویب ڈرائیور کو ویب پیج ڈاؤن لوڈ کرنا ہوگا اور اس پر کچھ بھی کرنے سے پہلے صفحہ کو پیش کرنا ختم کرنا ہوگا۔ ماضی میں ، ویب سرور نے کسی ویب سائٹ کا مواد تیار کیا ، اور براؤزر نے اسے ابھی ڈاؤن لوڈ کیا اور اسے پیش کیا۔ ان دنوں ہمارے پاس بہت سے سنگل پیج ویب ایپس ہیں جو تھوڑا سا مختلف طریقے سے کام کرتی ہیں۔ سنگل پیج ویب ایپس (ایس پی اے) میں ، ویب سرور صرف فرنٹ اینڈ کوڈز پیش کرتا ہے۔ ایک بار جب فرنٹ اینڈ کوڈ براؤزر پر پیش کیا جاتا ہے ، فرنٹ اینڈ کوڈ ویب سرور پر API ڈیٹا کی درخواست کرنے کے لیے AJAX استعمال کرتا ہے۔ ایک بار جب فرنٹ اینڈ API ڈیٹا حاصل کرتا ہے ، تو یہ انہیں براؤزر پر پیش کرتا ہے۔ چنانچہ ، اگرچہ براؤزر نے ویب پیج کو ڈاؤن لوڈ اور رینڈر کرنا ختم کر دیا ہے ، ویب پیج اب بھی تیار نہیں ہے۔ آپ کو API ڈیٹا حاصل کرنے کا انتظار کرنا ہوگا اور انہیں بھی پیش کرنا ہوگا۔ لہذا ، اس مسئلے کا حل یہ ہے کہ ہم سیلینیم کے ساتھ کچھ کرنے سے پہلے ڈیٹا کے دستیاب ہونے کا انتظار کریں۔







سیلینیم میں ، انتظار کی 2 اقسام ہیں:
1) واضح انتظار۔
2) واضح انتظار۔



1) واضح انتظار: یہ عمل کرنے میں سب سے آسان ہے۔ ایک واضح انتظار سیلینیم ویب ڈرائیور سے کہتا ہے کہ وہ DOM (دستاویز آبجیکٹ ماڈل) کے تیار ہونے کے لیے کئی سیکنڈ انتظار کرے (ویب صفحہ تیار ہو)۔



2) واضح انتظار: یہ ضمنی انتظار سے تھوڑا پیچیدہ ہے۔ واضح انتظار میں ، آپ سیلینیم ویب ڈرائیور کو بتائیں کہ کس چیز کا انتظار کرنا ہے۔ سیلینیم اس مخصوص شرط کے پورا ہونے کا انتظار کرتا ہے۔ ایک بار جب یہ پورا ہوجائے تو ، سیلینیم ویب ڈرائیور دوسرے احکامات لینے کے لیے تیار ہوجائے گا۔ عام طور پر ، واضح انتظار کا وقت متغیر ہوتا ہے۔ یہ اس بات پر منحصر ہے کہ حالات کتنی جلدی مطمئن ہیں۔ بدترین صورت حال میں ، واضح انتظار اس وقت تک انتظار کرے گا جب تک ضمنی انتظار۔





اس آرٹیکل میں ، میں آپ کو دکھانے جا رہا ہوں کہ سیلینیم کے ساتھ کسی صفحے کو لوڈ کرنے کے لیے (واضح اور واضح) انتظار کیسے کریں۔ تو ، آئیے شروع کریں۔

شرائط:

اس آرٹیکل کے احکامات اور مثالوں کو آزمانے کے لیے ، آپ کے پاس ہونا چاہیے ،



1) آپ کے کمپیوٹر پر ایک لینکس ڈسٹری بیوشن (ترجیحی طور پر اوبنٹو) انسٹال ہے۔
2) آپ کے کمپیوٹر پر ازگر 3 انسٹال ہے۔
3) آپ کے کمپیوٹر پر PIP 3 انسٹال ہے۔
4) ازگر۔ virtualenv آپ کے کمپیوٹر پر پیکیج انسٹال ہے۔
5) موزیلا فائر فاکس یا گوگل کروم ویب براؤزر آپ کے کمپیوٹر پر انسٹال ہیں۔
6) فائر فاکس گیکو ڈرائیور یا کروم ویب ڈرائیور انسٹال کرنے کا طریقہ جاننا ضروری ہے۔

ضروریات 4 ، 5 اور 6 کو پورا کرنے کے لیے ، میرا مضمون پڑھیں۔ ازگر 3 کے ساتھ سیلینیم کا تعارف Linuxhint.com پر۔

آپ کو دوسرے موضوعات پر بہت سے مضامین مل سکتے ہیں۔ LinuxHint.com . اگر آپ کو کسی مدد کی ضرورت ہو تو ان کو ضرور چیک کریں۔

پروجیکٹ ڈائرکٹری قائم کرنا:

ہر چیز کو منظم رکھنے کے لیے ، ایک نئی پروجیکٹ ڈائرکٹری بنائیں۔ سیلینیم-انتظار/ حسب ذیل:

$mkdir -پی ویسیلینیم-انتظار/ڈرائیور

پر جائیں۔ سیلینیم-انتظار/ پروجیکٹ ڈائریکٹری مندرجہ ذیل ہے:

$سی ڈیسیلینیم-انتظار/

پروجیکٹ ڈائرکٹری میں ازگر کا ورچوئل ماحول بنائیں:

$virtualenv .venv

ورچوئل ماحول کو مندرجہ ذیل کے طور پر چالو کریں۔

$ذریعہ.venv/ہوں/محرک کریں

PIP3 کا استعمال کرتے ہوئے سیلینیم کو انسٹال کریں:

$ pip3 انسٹال سیلینیم۔

تمام مطلوبہ ویب ڈرائیور کو ڈاؤن لوڈ اور انسٹال کریں۔ ڈرائیور/ منصوبے کی ڈائریکٹری میں نے اپنے مضمون میں ویب ڈرائیوروں کو ڈاؤن لوڈ اور انسٹال کرنے کے عمل کی وضاحت کی ہے۔ ازگر 3 کے ساتھ سیلینیم کا تعارف . اگر آپ کو کسی مدد کی ضرورت ہو تو ، تلاش کریں۔ LinuxHint.com اس مضمون کے لیے

میں اس مضمون میں مظاہرے کے لیے گوگل کروم ویب براؤزر استعمال کروں گا۔ تو ، میں استعمال کروں گا کروم ڈرائیور سے بائنری ڈرائیور/ ڈائریکٹری

ضمنی انتظار کے ساتھ تجربہ کرنے کے لیے ، ایک نیا ازگر کا سکرپٹ بنائیں۔ ex01.py اپنی پروجیکٹ ڈائرکٹری میں اور اس فائل میں کوڈ کی درج ذیل لائنیں ٹائپ کریں۔

سےسیلینیمدرآمدویب ڈرائیور
سےسیلینیمویب ڈرائیور.عام.چابیاں درآمدچابیاں
اختیارات=ویب ڈرائیور.ChromeOptions()
اختیارات.سر کے بغیر = سچ ہے۔
براؤزر=ویب ڈرائیور.کروم(قابل عمل راہ۔='./drivers/chromedriver'،اختیارات=اختیارات)
براؤزر.واضح طور پر انتظار کریں(10۔)
براؤزر.حاصل کریں('https://www.unixtimestamp.com/')
ٹائم سٹیمپ=براؤزر.find_element_by_xpath('// h3 [@] [1]')
پرنٹ کریں('موجودہ ٹائم اسٹیمپ:٪ s'٪(ٹائم سٹیمپمتن.تقسیم('')[]))
براؤزر.بند کریں()

ایک بار جب آپ کام کرلیں ، محفوظ کریں۔ ex01.py ازگر کا سکرپٹ۔

لائن 1 اور 2 تمام مطلوبہ سیلینیم اجزاء درآمد کرتی ہے۔

لائن 4 کروم آپشنز آبجیکٹ بناتی ہے۔

لائن 5 کروم ویب ڈرائیور کے لیے ہیڈ لیس موڈ کو قابل بناتی ہے۔

لائن 7 استعمال کرتے ہوئے کروم براؤزر آبجیکٹ بناتی ہے۔ کروم ڈرائیور سے بائنری ڈرائیور/ ڈائریکٹری

لائن 8 کا استعمال سیلینیم کو یہ بتانے کے لیے کیا جاتا ہے کہ اس کا استعمال کرتے ہوئے 10 سیکنڈ تک واضح طور پر انتظار کریں۔ واضح طور پر انتظار کریں () براؤزر کا طریقہ

لائن 10 براؤزر میں www.unixtimestamp.com لوڈ کرتی ہے۔

لائن 12 کو XPath سلیکٹر کا استعمال کرتے ہوئے ٹائم اسٹیمپ عنصر ملتا ہے۔ // h3 [@class = 'text-danger'] [1] اور اسے اس میں محفوظ کرتا ہے۔ ٹائم سٹیمپ متغیر

مجھے کروم ڈویلپر ٹول سے XPath سلیکٹر ملا۔ جیسا کہ آپ دیکھ سکتے ہیں ، ٹائم اسٹیمپ پہلے میں ہے۔ h3 کلاس کے نام کے ساتھ عنصر۔ متن کا خطرہ . 2 ہیں۔ h3 کلاس کے ساتھ عناصر متن کا خطرہ .

لائن 13 صرف اس عنصر سے ٹائم اسٹیمپ پرنٹ کرتی ہے جسے میں نے XPath سلیکٹر کا استعمال کرتے ہوئے منتخب کیا ہے اور اس میں محفوظ کیا ہے۔ ٹائم سٹیمپ متغیر

لائن 14 براؤزر کو بند کر دیتی ہے۔

ایک بار جب آپ کام کرلیں ، ازگر اسکرپٹ چلائیں۔ ex01.py حسب ذیل:

$ python3 ex01۔py

جیسا کہ آپ دیکھ سکتے ہیں ، موجودہ ٹائم اسٹیمپ unixtimestamp.com سے نکالا گیا ہے اور کنسول پر چھاپا گیا ہے۔

واضح انتظار کے ساتھ کام کرنا:

واضح انتظار کے ساتھ تجربہ کرنے کے لیے ، ایک نیا ازگر اسکرپٹ بنائیں۔ ex02.py اپنی پروجیکٹ ڈائرکٹری میں اور اس فائل میں کوڈ کی درج ذیل لائنیں ٹائپ کریں۔

سےسیلینیمدرآمدویب ڈرائیور
سےسیلینیمویب ڈرائیور.عام.چابیاں درآمدچابیاں
سےسیلینیمویب ڈرائیور.عام.کی طرف سے درآمدکی طرف سے
سےسیلینیمویب ڈرائیور.سپورٹ.پیاز درآمدویب ڈرائور ویٹ۔
سےسیلینیمویب ڈرائیور.سپورٹ درآمدمتوقع_ حالات
اختیارات=ویب ڈرائیور.ChromeOptions()
اختیارات.سر کے بغیر = سچ ہے۔
براؤزر=ویب ڈرائیور.کروم(قابل عمل راہ۔='./drivers/chromedriver'،اختیارات=اختیارات)
براؤزر.حاصل کریں('https://www.unixtimestamp.com/')
کوشش کریں:
ٹائم سٹیمپ=ویب ڈرائور ویٹ۔(براؤزر، 10۔).تک(
متوقع_ حالاتموجودگی کا_ عنصر_ مقام۔((کی طرف سےXPATH۔، '
// h3 [@] [1] '
))
)
پرنٹ کریں('موجودہ ٹائم اسٹیمپ:٪ s'٪(ٹائم سٹیمپمتن.تقسیم('')[]))
آخر میں:
براؤزر.بند کریں()

ایک بار جب آپ کام کرلیں ، محفوظ کریں۔ ex02.py ازگر کا سکرپٹ۔

لائن 1-5 سیلینیم لائبریری سے تمام مطلوبہ اجزاء درآمد کرتی ہے۔

لائن 7 کروم آپشنز آبجیکٹ بناتی ہے۔

لائن 8 کروم ویب ڈرائیور کے لیے ہیڈ لیس موڈ کو قابل بناتی ہے۔

لائن 10 استعمال کرتے ہوئے کروم براؤزر آبجیکٹ بناتی ہے۔ کروم ڈرائیور سے بائنری ڈرائیور/ ڈائریکٹری

لائن 12 براؤزر میں www.unixtimestamp.com لوڈ کرتی ہے۔

واضح انتظار کو آخر میں بلاک میں لاگو کیا جاتا ہے (لائن 14-20 سے)

لائن 15-17 استعمال کرتی ہے۔ WebDriverWait () چیز. کی پہلی دلیل۔ WebDriverWait () براؤزر آبجیکٹ ہے ، اور دوسری دلیل شرط کو پورا کرنے کے لیے زیادہ سے زیادہ اجازت دی گئی وقت (بدترین صورت حال) ہے ، جو اس معاملے میں 10 سیکنڈ ہے۔

میں تک () بلاک ، متوقع_ شرائط. طریقہ اس بات کو یقینی بنانے کے لیے استعمال کیا جاتا ہے کہ عنصر کو منتخب کرنے کی کوشش کرنے سے پہلے عنصر موجود ہے۔ یہاں ، بذریعہ XPATH۔ بتانے کے لیے استعمال کیا جاتا ہے۔ موجودگی کا_ عنصر_ مقام () وہ طریقہ جسے ہم نے عنصر کو منتخب کرنے کے لیے ایک XPath سلیکٹر استعمال کیا ہے۔ XPath سلیکٹر ہے۔ // h3 [@class = 'text-danger'] [1] .

ایک بار جب عنصر مل جاتا ہے ، تو یہ اس میں محفوظ ہوجاتا ہے۔ ٹائم سٹیمپ متغیر

لائن 18 منتخب عنصر سے صرف ٹائم اسٹیمپ پرنٹ کرتی ہے۔

آخر میں ، لائن 19-20 براؤزر کو بند کر دیتی ہے۔

ایک بار جب آپ کام کر لیں تو ، چلائیں۔ ex02.py ازگر کا اسکرپٹ مندرجہ ذیل ہے:

$ python3 ex02۔py

جیسا کہ آپ دیکھ سکتے ہیں ، unixtimestamp.com سے موجودہ ٹائم اسٹیمپ کنسول پر چھپا ہوا ہے۔

واضح انتظار میں عناصر کا انتخاب:

پہلے حصے میں ، میں نے استعمال کیا ہے۔ بذریعہ XPATH۔ XPath سلیکٹر کا استعمال کرتے ہوئے عنصر کو منتخب کرنے کے لیے۔ آپ آئی ڈی ، ٹیگ کا نام ، سی ایس ایس کلاس کا نام ، سی ایس ایس سلیکٹر وغیرہ کا استعمال کرتے ہوئے عناصر کو بھی منتخب کرسکتے ہیں۔

انتخاب کے معاون طریقے ذیل میں دیے گئے ہیں:

بذریعہ XPATH۔ - XPath سلیکٹر کا استعمال کرتے ہوئے عنصر/عناصر کو منتخب کرتا ہے۔

بذریعہ CLASS_NAME۔ - سی ایس ایس کلاس کا نام استعمال کرتے ہوئے عنصر/عناصر کو منتخب کرتا ہے۔

بذریعہ CS_SELECTOR۔ - سی ایس ایس سلیکٹر کا استعمال کرتے ہوئے عنصر/عناصر کو منتخب کرتا ہے۔

بذریعہ آئی ڈی۔ - ID کے ذریعہ عنصر منتخب کرتا ہے۔

نام کے ساتھ - نام سے عنصر/عناصر کا انتخاب کرتا ہے۔

بذریعہ TTAG۔ - HTML ٹیگ کے نام سے عنصر/عناصر کو منتخب کرتا ہے۔

بذریعہ LINK_TEXT۔ - لنک ٹیکسٹ کے ذریعہ عنصر/عناصر کو منتخب کرتا ہے۔ کو (اینکر) ایچ ٹی ایم ایل ٹیگ۔

بذریعہ PARTIAL_LINK_TEXT۔ - جزوی لنک ٹیکسٹ کے ذریعہ عنصر/عناصر کو منتخب کرتا ہے۔ کو (اینکر) ایچ ٹی ایم ایل ٹیگ۔

ان کے بارے میں مزید معلومات کے لیے ، ملاحظہ کریں۔ ازگر سیلینیم API دستاویزی صفحہ۔ .

واضح انتظار میں متوقع حالات:

پہلے واضح انتظار کی مثال میں ، میں نے استعمال کیا ہے۔ موجودگی کا_ عنصر_ مقام () کا طریقہ متوقع_ حالات واضح انتظار کی شرط کے طور پر اس بات کا یقین کرنے کے لیے کہ جس عنصر کی میں تلاش کر رہا تھا اسے منتخب کرنے سے پہلے موجود ہے۔

دوسرے ہیں۔ متوقع_ حالات آپ ایک واضح انتظار کی حالت کے طور پر استعمال کر سکتے ہیں۔ ان میں سے کچھ یہ ہیں:

title_is (عنوان) - چیک کرتا ہے کہ صفحے کا عنوان ہے یا نہیں۔ عنوان .

title_contains (جزوی_ عنوان) - چیک کرتا ہے کہ صفحے کے عنوان میں عنوان کا کوئی حصہ ہے۔ جزوی_ عنوان .

visibility_of (عنصر) - چیک کرتا ہے کہ عنصر اس صفحے پر نظر آتا ہے جو عنصر کی چوڑائی اور اونچائی 0 سے زیادہ ہے۔

visibility_of_element_located (locator) -

موجودگی کا_ عنصر_ مقام (لوکیٹر) - یقینی بنائیں کہ عنصر واقع ہے (از لوکیٹر ) صفحہ پر موجود ہے۔ کی لوکیٹر کا ایک ٹکڑا ہے (بذریعہ ، سلیکٹر) ، جیسا کہ میں نے انتظار کی واضح مثال میں دکھایا ہے۔

موجودگی کا_ تمام_ عنصر_ مقام () - اس بات کو یقینی بناتا ہے کہ تمام عنصر مماثل ہے۔ لوکیٹر صفحے پر موجود ہے۔ کی لوکیٹر ایک ھے (بذریعہ ، سلیکٹر) ٹپل

text_to_be_present_in_element (لوکیٹر ، متن) - چیک کرتا ہے کہ متن کی طرف سے واقع عنصر میں موجود ہے لوکیٹر . کی لوکیٹر ایک ھے (بذریعہ ، سلیکٹر) ٹپل

element_to_be_clickable (لوکیٹر) - چیک کرتا ہے کہ آیا عنصر کی طرف سے واقع ہے۔ لوکیٹر قابل اور کلک کرنے کے قابل ہے۔ کی لوکیٹر ایک ھے (بذریعہ ، سلیکٹر) ٹپل

element_to_be_selected (locator) - چیک کرتا ہے کہ آیا عنصر کی طرف سے واقع ہے۔ لوکیٹر منتخب کیا جاتا ہے. کی لوکیٹر ایک ھے (بذریعہ ، سلیکٹر) ٹپل

انتباہ_یہ_پذیر () - پیج پر ایک الرٹ ڈائیلاگ کی توقع کریں۔

اور بھی بہت ہیں۔ متوقع_ حالات آپ کے استعمال کے لیے دستیاب ہے۔ ان کے بارے میں مزید معلومات کے لیے ، ملاحظہ کریں۔ ازگر سیلینیم API دستاویزی صفحہ۔ .

نتیجہ:

اس مضمون میں ، میں نے سیلینیم کے واضح اور واضح انتظار پر تبادلہ خیال کیا ہے۔ میں نے آپ کو ایک واضح اور واضح انتظار کے ساتھ کام کرنے کا طریقہ بھی دکھایا ہے۔ آپ کو ہمیشہ اپنے سیلینیم پروجیکٹس میں واضح انتظار کو استعمال کرنے کی کوشش کرنی چاہیے کیونکہ سیلینیم انتظار کے وقت کو جتنا ممکن ہو کم کرنے کی کوشش کرے گا۔ اس طرح ، ہر بار جب آپ اپنے سیلینیم پروجیکٹس کو چلاتے ہیں تو آپ کو سیکنڈ کی مخصوص تعداد کا انتظار نہیں کرنا پڑے گا۔ واضح انتظار میں بہت زیادہ سیکنڈ بچانے چاہئیں۔

سیلینیم انتظار کے بارے میں مزید معلومات کے لیے ملاحظہ کریں۔ سرکاری سیلینیم ازگر لائبریری دستاویزات کے صفحے کا انتظار کر رہی ہے۔ .