पायथन सेलेनियम: एकाधिक तत्वों को लोड करना सुनिश्चित करना
AJAX के माध्यम से गतिशील रूप से लोड किए गए तत्वों से निपटते समय, उनकी उपस्थिति की पुष्टि करना चुनौतीपूर्ण हो सकता है। इस परिदृश्य को संभालने के लिए, हम कई तत्वों की उपस्थिति सुनिश्चित करने के लिए सेलेनियम के वेबड्राइवरवेट और इसकी विभिन्न रणनीतियों का उपयोग करेंगे।
सभी तत्वों की दृश्यता:
की दृश्यता को सत्यापित करने के लिए एक विशिष्ट चयनकर्ता से मेल खाने वाले सभी तत्व, हम दृश्यता_of_all_elements_located() स्थिति को नियोजित कर सकते हैं:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
elements = WebDriverWait(driver, 20).until(
EC.visibility_of_all_elements_located(
(By.CSS_SELECTOR, "ul.ltr li[id^='t_b_'] > a[id^='t_a_'][href]")
)
)
तत्वों की एक विशिष्ट संख्या की प्रतीक्षा:
यदि आपको लोड होने के लिए तत्वों की एक विशिष्ट संख्या की प्रतीक्षा करने की आवश्यकता है, तो आप अपेक्षित शर्तों के साथ एक लैम्ब्डा फ़ंक्शन का उपयोग कर सकते हैं कक्षा:
WebDriverWait(driver, 20).until(
lambda driver: len(driver.find_elements_by_xpath(selector)) > int(myLength)
)
बाल तत्वों के लिए XPath:
पूरे DOM को खोजने के बजाय, मूल तत्व के भीतर बाल तत्वों की प्रतीक्षा करने के लिए, आप XPath अभिव्यक्तियों का उपयोग कर सकते हैं:
WebDriverWait(driver, 20).until(
EC.presence_of_element_located(
(By.XPATH, "//ul[@class='ltr']//li[starts-with(@id, 't_b_')]/a[starts-with(@id, 't_a_')]")
)
)
कस्टम प्रतीक्षा शर्तें:
यदि आप अपनी स्वयं की प्रतीक्षा स्थिति बनाना पसंद करते हैं, तो आप webdriver.support.ui.ExpectedCondition का एक उपवर्ग परिभाषित कर सकते हैं:
class MoreThanOne(webdriver.support.ui.ExpectedCondition):
def __init__(self, selector):
self.selector = selector
def __call__(self, driver):
elements = driver.find_elements_by_css_selector(self.selector)
return len(elements) > 1
WebDriverWait(driver, 30).until(MoreThanOne('li'))
DOM में तत्व हानि की रोकथाम:
खोज ऑपरेशन के बाद वर्तमान तत्व को खोने से बचने के लिए, प्रतीक्षा करने से पहले इसे एक चर में संग्रहीत करें:
element = driver.find_element_by_css_selector('ul')
WebDriverWait(element, 30).until(MoreThanOne('li'))
निष्कर्ष:
ये तकनीकें लोडिंग के लिए प्रतीक्षा करने का एक लचीला और मजबूत तरीका प्रदान करती हैं सेलेनियम में अनेक तत्व। अपनी आवश्यकताओं के आधार पर, वह दृष्टिकोण चुनें जो आपके उपयोग के मामले में सबसे उपयुक्त हो।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3