जबकि सेलेनियम आकर्षक और उपयोगी प्रतीत हो सकता है, लेकिन इसमें एक मुख्य समस्या है जिसे ठीक नहीं किया जा सकता है: प्रदर्शन। ब्राउज़र की हर चीज की गणना करके, आपको बहुत अधिक शक्ति की आवश्यकता होगी। यहां तक कि फैंटॉमजेएस भी एक साधारण अनुरोध के साथ प्रतिस्पर्धा नहीं करता है। मैं अनुशंसा करता हूं कि जब आप वास्तव में बटन क्लिक करने की आवश्यकता हो तो आप केवल सेलेनियम का उपयोग करेंगे। अगर आपको केवल जावास्क्रिप्ट की आवश्यकता है, तो मैं पीईक्यूटी की सिफारिश करता हूं (इसे जानने के लिए https://www.youtube.com/watch?v=FSH77vnOGqU देखें)।
हालांकि, यदि आप सेलेनियम का उपयोग करना चाहते हैं, तो मैं फ़ैंटॉमजेएस पर क्रोम की अनुशंसा करता हूं। कई उपयोगकर्ताओं को फ़ैंटॉमजेएस के साथ समस्याएं होती हैं जहां एक वेबसाइट फ़ैंटॉम में काम नहीं करती है। क्रोम हेडलेस (गैर-ग्राफिकल) भी हो सकता है!
सबसे पहले, सुनिश्चित करें कि आपने ChromeDriver इंस्टॉल किया है, जो सेलेनियम Google क्रोम का उपयोग करने के लिए निर्भर करता है।
उसके बाद, आप संस्करण 60 की गूगल क्रोम है या यूआरएल क्रोम में चेक करके उसे उच्च सुनिश्चित करें:
from selenium.webdriver.chrome.options import Options
from selenium import webdriver
chrome_options = Options()
chrome_options.add_argument("--headless")
driver = webdriver.Chrome(chrome_options=chrome_options)
: // settings/मदद
अब, तुम सब करने की जरूरत है निम्नलिखित कोड है
driver.get("https://www.google.com") #Browser goes to google.com
ढूँढना तत्वों: या तो तत्व या तत्व विधि उपयोग
आप कैसे सेलेनियम का उपयोग करने को नहीं जानते हैं, यहाँ एक त्वरित अवलोकन है। उदाहरण:
driver.find_element_by_css_selector("div.logo-subtext") #Find your country in Google. (singular)
- driver.find_element (रों) _by_css_selector (css_selector) # प्रत्येक तत्व निम्न वर्ग के साथ इस सीएसएस चयनकर्ता से मेल खाता
- driver.find_element (रों) _by_class_name (CLASS_NAME) # प्रत्येक तत्व
- driver.find_element (रों) _by_id (आईडी) # निम्नलिखित आईडी के साथ प्रत्येक तत्व
- driver.find_element (रों) _by_link_text (LINK_TEXT) # पूर्ण लिंक पाठ
- driv साथ हर er.find_element (by) _by_partial_link_text (partial_link_text) # प्रत्येक आंशिक लिंक टेक्स्ट के साथ।
- driver.find_element (रों) _by_name (नाम) # प्रत्येक तत्व जहां नाम = तर्क
- driver.find_element (रों) _by_tag_name (TAG_NAME) # टैग नाम तर्क
ठीक है के साथ प्रत्येक तत्व! मुझे एक तत्व (या तत्व सूची) मिला। लेकिन अब मैं क्या करूँ?
- elem.tag_name # एक में वापसी कर सके बटन:
यहाँ तरीकों एक तत्व ELEM पर आप कर सकते हैं।
- elem.get_attribute ("id") # किसी तत्व की आईडी लौटाता है।
- elem.text # किसी तत्व का आंतरिक पाठ।
- elem.clear() # एक टेक्स्ट इनपुट साफ़ करता है।
- elem.is_displayed() # दृश्य तत्वों के लिए सही, अदृश्य तत्वों के लिए झूठा।
- elem.is_enabled() # सक्षम इनपुट के लिए सही है, अन्यथा गलत।
- elem.is_selected() # क्या यह रेडियो बटन या चेकबॉक्स तत्व चुना गया है?
- elem.location # स्क्रीन पर किसी तत्व के एक्स और वाई स्थान का प्रतिनिधित्व करने वाला एक शब्दकोश।
- elem.click() # elem पर क्लिक करें।
- elem.send_keys ("thelegend27") # ELEM (पाठ आदानों के लिए उपयोगी) में टाइप thelegend27
- elem.submit() # रूप है जिसमें ELEM भाग लेता जमा करें।
विशेष कमांड:
- driver.back() # वापस बटन क्लिक करें।
- driver.forward() # फॉरवर्ड बटन पर क्लिक करें।
- driver.refresh() # पृष्ठ को रीफ्रेश करें।
- driver.quit() # सभी टैब सहित ब्राउज़र बंद करें।
- foo = driver.execute_script ("वापसी 'हैलो';") # निष्पादित जावास्क्रिप्ट (चुन सकता है मानों को लेकर!)
स्रोत
2017-08-24 14:20:07
तो वहाँ अनुरोध जावास्क्रिप्ट का उपयोग करने के लिए कोई रास्ता नहीं है। – Ben
नहीं, अनुरोध एक http पुस्तकालय है। यह जावास्क्रिप्ट नहीं चला सकता है। – sberry
आपने देखा और बेन को खोजने के लिए आपने किस टूल का उपयोग किया? मैं अभी यह कोशिश कर रहा हूं और मैं – codyc4321