செலினியத்துடன் ஒரு பக்கம் ஏற்றுவதற்கு எப்படி காத்திருக்க வேண்டும்

How Wait Page Load With Selenium



வலை ஆட்டோமேஷன் அல்லது செலினியம் வலை இயக்கியுடன் வலை ஸ்கிராப்பிங் செய்யும் போது, ​​நீங்கள் தேர்ந்தெடுக்க விரும்பும் உறுப்பு கிடைக்கவில்லை அல்லது நீங்கள் அழுத்த விரும்பும் பொத்தானை கிளிக் செய்யத் தயாராக இல்லை போன்ற பிரச்சனைகளை நீங்கள் சந்திக்க நேரிடும்.

இது நடப்பதற்கான காரணம், செலினியம் வலை இயக்கி வலைப்பக்கத்தை பதிவிறக்கம் செய்து, நீங்கள் எதையும் செய்வதற்கு முன் பக்கத்தை வழங்குவதை முடிக்க வேண்டும். கடந்த காலத்தில், வெப் சர்வர் ஒரு வலைத்தளத்தின் உள்ளடக்கத்தை உருவாக்கியது, மற்றும் உலாவி அதை பதிவிறக்கம் செய்து வழங்கியது. இந்த நாட்களில் எங்களிடம் பல ஒற்றை பக்க வலை பயன்பாடுகள் உள்ளன, அவை கொஞ்சம் வித்தியாசமாக வேலை செய்கின்றன. ஒற்றை பக்க வலை பயன்பாடுகளில் (SPA கள்), வலை சேவையகம் முன்பக்க குறியீடுகளை மட்டுமே வழங்குகிறது. உலாவியில் முன்பக்க குறியீடு வழங்கப்பட்டவுடன், முன்பக்க குறியீடு 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 அந்தக் கட்டுரைக்காக.

இந்த கட்டுரையில் ஆர்ப்பாட்டத்திற்காக நான் Google Chrome இணைய உலாவியைப் பயன்படுத்துவேன். எனவே, நான் பயன்படுத்துவேன் குரோமெட்ரைவர் இருந்து பைனரி ஓட்டுனர்கள்/ அடைவு

மறைமுக காத்திருப்புடன் பரிசோதனை செய்ய, புதிய பைதான் ஸ்கிரிப்டை உருவாக்கவும் ex01.py உங்கள் திட்டக் கோப்பகத்தில், அந்தக் கோப்பில் பின்வரும் குறியீடுகளின் வரிகளை உள்ளிடவும்.

இருந்துசெலினியம்இறக்குமதிவெப் டிரைவர்
இருந்துசெலினியம்வெப் டிரைவர்.பொதுவான.விசைகள் இறக்குமதிவிசைகள்
விருப்பங்கள்=வெப் டிரைவர்.ChromeOptions()
விருப்பங்கள்.தலை இல்லாத = உண்மை
உலாவி=வெப் டிரைவர்.குரோம்(இயங்கக்கூடிய பாதை='./drivers/chromedriver',விருப்பங்கள்=விருப்பங்கள்)
உலாவிமறைமுகமாக_ காத்திருங்கள்(10)
உலாவிபெறு('https://www.unixtimestamp.com/')
நேர முத்திரை=உலாவிஎக்ஸ்பாத் மூலம் எலிமென்ட்_ கண்டுபிடி('// h3 [@] [1]')
அச்சு('தற்போதைய நேர முத்திரை: %s'%(நேர முத்திரை.உரை.பிளவு('')[0]))
உலாவிநெருக்கமான()

நீங்கள் முடித்தவுடன், சேமிக்கவும் ex01.py பைதான் ஸ்கிரிப்ட்.

வரி 1 மற்றும் 2 தேவையான அனைத்து செலினியம் கூறுகளையும் இறக்குமதி செய்கிறது.

வரி 4 ஒரு Chrome விருப்பங்கள் பொருளை உருவாக்குகிறது.

வரி 5 Chrome இணைய இயக்கிக்கு தலை இல்லாத பயன்முறையை செயல்படுத்துகிறது.

வரி 7 ஒரு Chrome உலாவி பொருளைப் பயன்படுத்தி உருவாக்குகிறது குரோமெட்ரைவர் இருந்து பைனரி ஓட்டுனர்கள்/ அடைவு

வரி 8 பயன்படுத்தி செலினியம் 10 விநாடிகள் மறைமுகமாக காத்திருக்கச் சொல்கிறது மறைமுகமாக காத்திருங்கள் () உலாவி முறை.

வரி 10 உலாவியில் www.unixtimestamp.com ஐ ஏற்றுகிறது.

வரி 12 எக்ஸ்பாத் தேர்வைப் பயன்படுத்தி நேர முத்திரை உறுப்பைக் கண்டறிகிறது // h3 [@class = 'text-ஆபத்து'] [1] மற்றும் அதை சேமித்து வைக்கிறது நேர முத்திரை மாறி.

நான் Chrome டெவலப்பர் கருவியிலிருந்து XPath தேர்வாளரைப் பெற்றேன். நீங்கள் பார்க்க முடியும் என, நேர முத்திரை முதலில் உள்ளது h3 வகுப்பு பெயருடன் உறுப்பு உரை-ஆபத்து . 2 உள்ளன h3 வர்க்கம் கொண்ட கூறுகள் உரை-ஆபத்து .

XPath தேர்வாளரைப் பயன்படுத்தி நான் தேர்ந்தெடுத்த உறுப்பில் இருந்து நேரம் முத்திரையை மட்டும் வரி 13 அச்சிடுகிறது மற்றும் அதில் சேமிக்கப்படுகிறது நேர முத்திரை மாறி.

14 வது வரி உலாவியை மூடுகிறது.

நீங்கள் முடித்தவுடன், பைதான் ஸ்கிரிப்டை இயக்கவும் ex01.py பின்வருமாறு:

$ python3 ex01.பை

நீங்கள் பார்க்கிறபடி, தற்போதைய நேர முத்திரை unixtimestamp.com இலிருந்து பிரித்தெடுக்கப்பட்டு கன்சோலில் அச்சிடப்படுகிறது.

வெளிப்படையான காத்திருப்புடன் வேலை செய்யுங்கள்:

வெளிப்படையான காத்திருப்புடன் பரிசோதனை செய்ய, ஒரு புதிய பைதான் ஸ்கிரிப்டை உருவாக்கவும் ex02.py உங்கள் திட்டக் கோப்பகத்தில், அந்தக் கோப்பில் பின்வரும் குறியீடுகளின் வரிகளை உள்ளிடவும்.

இருந்துசெலினியம்இறக்குமதிவெப் டிரைவர்
இருந்துசெலினியம்வெப் டிரைவர்.பொதுவான.விசைகள் இறக்குமதிவிசைகள்
இருந்துசெலினியம்வெப் டிரைவர்.பொதுவான.மூலம் இறக்குமதிமூலம்
இருந்துசெலினியம்வெப் டிரைவர்.ஆதரவு.வெங்காயம் இறக்குமதிWebDriverWait
இருந்துசெலினியம்வெப் டிரைவர்.ஆதரவு இறக்குமதிஎதிர்பார்க்கப்படும் நிபந்தனைகள்
விருப்பங்கள்=வெப் டிரைவர்.ChromeOptions()
விருப்பங்கள்.தலை இல்லாத = உண்மை
உலாவி=வெப் டிரைவர்.குரோம்(இயங்கக்கூடிய பாதை='./drivers/chromedriver',விருப்பங்கள்=விருப்பங்கள்)
உலாவிபெறு('https://www.unixtimestamp.com/')
முயற்சி:
நேர முத்திரை=WebDriverWait(உலாவி, 10).வரை(
எதிர்பார்க்கப்படும் நிபந்தனைகள்.உறுப்பு_இடம்_இருந்தது((மூலம்.XPATH, '
// h3 [@] [1] '
))
)
அச்சு('தற்போதைய நேர முத்திரை: %s'%(நேர முத்திரை.உரை.பிளவு('')[0]))
இறுதியாக:
உலாவிநெருக்கமான()

நீங்கள் முடித்தவுடன், சேமிக்கவும் ex02.py பைதான் ஸ்கிரிப்ட்.

வரி 1-5 செலினியம் நூலகத்திலிருந்து தேவையான அனைத்து கூறுகளையும் இறக்குமதி செய்கிறது.

வரி 7 ஒரு Chrome விருப்பங்கள் பொருளை உருவாக்குகிறது.

வரி 8 குரோம் இணைய இயக்கிக்கு தலை இல்லாத பயன்முறையை இயக்குகிறது.

வரி 10 ஒரு Chrome உலாவி பொருளைப் பயன்படுத்தி உருவாக்குகிறது குரோமெட்ரைவர் இருந்து பைனரி ஓட்டுனர்கள்/ அடைவு

வரி 12 உலாவியில் www.unixtimestamp.com ஐ ஏற்றுகிறது.

வெளிப்படையான காத்திருப்பு முயற்சி-இறுதியாக தொகுதியில் செயல்படுத்தப்படுகிறது (வரி 14-20 இலிருந்து)

வரி 15-17 பயன்படுத்துகிறது உருவாக்குகிறது WebDriverWait () பொருள் என்ற முதல் வாதம் WebDriverWait () உலாவி பொருள், மற்றும் இரண்டாவது வாதம் நிபந்தனையை நிறைவேற்ற அதிகபட்ச அனுமதிக்கப்பட்ட நேரம் (மோசமான சூழ்நிலை), இது இந்த வழக்கில் 10 வினாடிகள் ஆகும்.

இல் வரை () தொகுதி, எதிர்பார்க்கப்படும்_நிபந்தனைகள். உறுப்பைத் தேர்ந்தெடுக்க முயற்சிக்கும் முன் உறுப்பு இருப்பதை உறுதி செய்ய முறை பயன்படுத்தப்படுகிறது. இங்கே, XPATH மூலம் சொல்ல பயன்படுகிறது இருப்பு_ஒரு உறுப்பு_இருந்தது () உறுப்பைத் தேர்ந்தெடுக்க எக்ஸ்பாத் தேர்வாளரைப் பயன்படுத்திய முறை. எக்ஸ்பாத் தேர்வாளர் // h3 [@class = 'text-ஆபத்து'] [1] .

உறுப்பு கண்டுபிடிக்கப்பட்டவுடன், அது அதில் சேமிக்கப்படும் நேர முத்திரை மாறி.

தேர்ந்தெடுக்கப்பட்ட உறுப்பில் இருந்து 18 வது வரிசை நேர முத்திரையை மட்டுமே அச்சிடுகிறது.

இறுதியாக, வரி 19-20 உலாவியை மூடுகிறது.

நீங்கள் முடித்தவுடன், இயக்கவும் ex02.py பைதான் ஸ்கிரிப்ட் பின்வருமாறு:

$ python3 ex02.பை

நீங்கள் பார்க்க முடியும் என, unixtimestamp.com இலிருந்து தற்போதைய நேர முத்திரை கன்சோலில் அச்சிடப்பட்டுள்ளது.

வெளிப்படையான காத்திருப்புகளில் உறுப்புகளைத் தேர்ந்தெடுப்பது:

முந்தைய பிரிவில், நான் பயன்படுத்தினேன் XPATH மூலம் எக்ஸ்பாத் தேர்வைப் பயன்படுத்தி உறுப்பைத் தேர்ந்தெடுக்க. ஐடி, டேக் பெயர், சிஎஸ்எஸ் வகுப்பு பெயர், சிஎஸ்எஸ் தேர்வாளர் போன்றவற்றைப் பயன்படுத்தி நீங்கள் உறுப்புகளைத் தேர்ந்தெடுக்கலாம்.

ஆதரிக்கப்படும் தேர்வு முறைகள் கீழே கொடுக்கப்பட்டுள்ளன:

XPATH மூலம் - எக்ஸ்பாத் தேர்வைப் பயன்படுத்தி உறுப்பு/உறுப்புகளைத் தேர்ந்தெடுக்கிறது.

CLASS_NAME மூலம் - CSS வகுப்பு பெயரைப் பயன்படுத்தி உறுப்பு/உறுப்புகளைத் தேர்ந்தெடுக்கிறது.

சிஎஸ்எஸ்_எல்டிஓஆர் - CSS தேர்வாளரைப் பயன்படுத்தி உறுப்பு/உறுப்புகளைத் தேர்ந்தெடுக்கிறது.

ஐடி மூலம் - ஐடி மூலம் உறுப்பைத் தேர்ந்தெடுக்கிறது

மூலம் - பெயர் மூலம் உறுப்பு/உறுப்புகளைத் தேர்ந்தெடுக்கிறது.

மூலம். TAG_NAME - HTML டேக் பெயரால் உறுப்பு/உறுப்புகளைத் தேர்ந்தெடுக்கிறது.

மூலம். LINK_TEXT - இணைப்பு உரை மூலம் உறுப்பு/உறுப்புகளைத் தேர்ந்தெடுக்கிறது க்கு (நங்கூரம்) HTML டேக்.

வழங்கியவர். PARTIAL_LINK_TEXT - பகுதி இணைப்பு உரை மூலம் உறுப்பு/உறுப்புகளைத் தேர்ந்தெடுக்கிறது க்கு (நங்கூரம்) HTML டேக்.

இவை பற்றிய கூடுதல் தகவலுக்கு, செல்க பைதான் செலினியம் ஏபிஐ ஆவணப் பக்கம் .

வெளிப்படையான காத்திருப்புகளில் எதிர்பார்க்கப்படும் நிலைமைகள்:

முந்தைய வெளிப்படையான காத்திருப்பு எடுத்துக்காட்டில், நான் பயன்படுத்தினேன் இருப்பு_ஒரு உறுப்பு_இருந்தது () என்ற முறை எதிர்பார்க்கப்படும் நிபந்தனைகள் நான் தேடும் உறுப்பு அதைத் தேர்ந்தெடுப்பதற்கு முன்பு இருக்கிறதா என்பதை உறுதிப்படுத்த வெளிப்படையான காத்திருப்பு நிலை.

மற்றவை உள்ளன எதிர்பார்க்கப்படும் நிபந்தனைகள் நீங்கள் ஒரு வெளிப்படையான காத்திருப்பு நிலையில் பயன்படுத்தலாம். அவற்றில் சில:

தலைப்பு_இது (தலைப்பு) - பக்கத்தின் தலைப்பு இருக்கிறதா என்று சரிபார்க்கிறது தலைப்பு .

title_contains (பகுதி_தலைப்பு) - பக்கத்தின் தலைப்பில் தலைப்பின் ஒரு பகுதி இருக்கிறதா என்று சரிபார்க்கிறது பகுதி_ தலைப்பு .

தெரிவுநிலை_ (உறுப்பு) - சரிபார்க்கிறது உறுப்பு பக்கத்தில் அகலம் மற்றும் உயரம் 0 ஐ விட அதிகமாக உள்ளது.

தெரிவுநிலை_ஒரு உறுப்பு_இடம் -

இருப்பு_ஒரு உறுப்பு_இடம் - உறுப்பு இருப்பதை உறுதி செய்யவும் (மூலம் கண்டுபிடிப்பான் ) பக்கத்தில் உள்ளது. தி கண்டுபிடிப்பான் ஒரு டூப்பிள் ஆகும் (மூலம், தேர்வாளர்), நான் வெளிப்படையான காத்திருப்பு உதாரணத்தில் காட்டியுள்ளபடி.

இருப்பு_அனைத்து உறுப்பு - அனைத்து உறுப்புகளும் பொருந்தும் என்பதை உறுதி செய்கிறது கண்டுபிடிப்பான் பக்கத்தில் உள்ளது. தி கண்டுபிடிப்பான் ஒரு (தேர்வாளர் மூலம்) tuple.

உரை_இதில்_தற்போது_இருக்கவும் (இருப்பிடம், உரை) - என்பதை சரிபார்க்கிறது உரை மூலம் அமைந்துள்ள உறுப்பில் உள்ளது கண்டுபிடிப்பான் . தி கண்டுபிடிப்பான் ஒரு (தேர்வாளர் மூலம்) tuple.

உறுப்பு_க்கு_அடுக்கக்கூடியது (இருப்பிடம்) - உறுப்பு அமைந்துள்ளதா என சரிபார்க்கிறது கண்டுபிடிப்பான் தெரியும் மற்றும் கிளிக் செய்யக்கூடியது. தி கண்டுபிடிப்பான் ஒரு (தேர்வாளர் மூலம்) tuple.

உறுப்பு_ தேர்ந்தெடுக்கப்பட வேண்டும் (இருப்பிடம்) - உறுப்பு அமைந்துள்ளதா என சரிபார்க்கிறது கண்டுபிடிப்பான் தேர்வு செய்யப்படுகிறது. தி கண்டுபிடிப்பான் ஒரு (தேர்வாளர் மூலம்) tuple.

எச்சரிக்கை_இப்போது_ ( - பக்கத்தில் ஒரு எச்சரிக்கை உரையாடல் இருக்கும் என்று எதிர்பார்க்கலாம்.

இன்னும் பல உள்ளன எதிர்பார்க்கப்படும் நிபந்தனைகள் நீங்கள் பயன்படுத்தக் கிடைக்கும். இவை பற்றிய கூடுதல் தகவலுக்கு, செல்க பைதான் செலினியம் ஏபிஐ ஆவணப் பக்கம் .

முடிவுரை:

இந்த கட்டுரையில், செலினியத்தின் மறைமுகமான மற்றும் வெளிப்படையான காத்திருப்புகளைப் பற்றி விவாதித்தேன். மறைமுகமான மற்றும் வெளிப்படையான காத்திருப்புடன் எப்படி வேலை செய்வது என்பதையும் நான் உங்களுக்குக் காட்டியுள்ளேன். உங்கள் செலினியம் திட்டங்களில் வெளிப்படையான காத்திருப்பைப் பயன்படுத்த நீங்கள் எப்போதும் முயற்சி செய்ய வேண்டும், ஏனெனில் செலினியம் முடிந்தவரை காத்திருக்கும் நேரத்தை குறைக்க முயற்சிக்கும். இந்த வழியில், நீங்கள் ஒவ்வொரு முறையும் உங்கள் செலினியம் திட்டங்களை இயக்கும்போது குறிப்பிட்ட எண்ணிக்கையிலான வினாடிகள் காத்திருக்க வேண்டியதில்லை. வெளிப்படையான காத்திருப்பு நிறைய நொடிகளை சேமிக்க வேண்டும்.

செலினியம் காத்திருத்தல் பற்றிய கூடுதல் தகவலுக்கு, வருகை அதிகாரப்பூர்வ செலினியம் பைதான் நூலகம் ஆவணம் பக்கம் காத்திருக்கிறது .