क्या सेलेनियम के लिए सभी एजेक्स सामग्री लोड होने तक प्रतीक्षा करने के लिए एक सार्वभौमिक दृष्टिकोण है? (एक विशिष्ट वेबसाइट से बंधा नहीं - तो यह हर ajax वेबसाइट के लिए काम करता है)सेलेनियम अजाक्स सामग्री को लोड करने के लिए प्रतीक्षा करें - सार्वभौमिक दृष्टिकोण
उत्तर
आपको लोडिंग समाप्त करने के लिए जावास्क्रिप्ट और jQuery की प्रतीक्षा करनी होगी। jQuery.active
0
और document.readyState
complete
है, जिसका अर्थ है कि जेएस और jQuery लोड पूरा हो गया है, यह जांचने के लिए जावास्क्रिप्ट निष्पादित करें।
public boolean waitForJSandJQueryToLoad() {
WebDriverWait wait = new WebDriverWait(driver, 30);
// wait for jQuery to load
ExpectedCondition<Boolean> jQueryLoad = new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(WebDriver driver) {
try {
return ((Long)((JavascriptExecutor)getDriver()).executeScript("return jQuery.active") == 0);
}
catch (Exception e) {
// no jQuery present
return true;
}
}
};
// wait for Javascript to load
ExpectedCondition<Boolean> jsLoad = new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(WebDriver driver) {
return ((JavascriptExecutor)getDriver()).executeScript("return document.readyState")
.toString().equals("complete");
}
};
return wait.until(jQueryLoad) && wait.until(jsLoad);
}
के रूप में मार्क कोलिन अपनी पुस्तक "मास्टरिंग सेलेनियम Webdriver", का उपयोग JavascriptExecutor आप एक वेबसाइट jQuery का उपयोग कर AJAX कॉल
बनाने समाप्त हो गया है कि क्या यह पता लगाने जाने में वर्णितpublic class AdditionalConditions {
public static ExpectedCondition<Boolean> jQueryAJAXCallsHaveCompleted() {
return new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(WebDriver driver) {
return (Boolean) ((JavascriptExecutor) driver).executeScript("return (window.jQuery != null) && (jQuery.active === 0);");
}
};
}
}
आपके संकेत के लिए धन्यवाद। लेकिन क्या होगा यदि कोई पक्ष jQuery का उपयोग नहीं करता है? –
ठीक है अगर आपके पास अन्य जावास्क्रिप्ट लाइब्रेरी है तो आपको उस पर भरोसा करना होगा। उसी पुस्तक में उनके पास AngularJS के लिए उदाहरण है, अन्यथा मैं एक और उत्तर से सहमत हूं कि आपको डोमेन विशिष्ट होना चाहिए, और [स्पष्ट और लागू वेट्स] का उपयोग करें (http://www.seleniumhq.org/docs/04_webdriver_advanced.jsp#explicit -और-निहित-प्रतीक्षा करता है) –
मुझे विश्वास नहीं है कि बॉक्स से एक सार्वभौमिक दृष्टिकोण है। मैं आम तौर पर एक विधि बनाता हूं जो .waituntilrowcount(2)
या waituntilvisible()
करता है जो एक तत्व को चुनाव करता है।
एचएम - dammn। क्या कोई अन्य लाइब्रेरी है जो AJAX वेबसाइटों को क्रॉल करने में सक्षम है? सेलेनियम, एचटीएमएल्यून और क्रॉलजैक्स का प्रयास किया। समस्या htmlunit: त्रुटि के खिलाफ बहुत संवेदनशील है और आप इसे बंद नहीं कर सकते हैं। क्रॉलजैक्स: शायद एजेक्स को क्रॉल करने में सक्षम है लेकिन आपको वेबपृष्ठ का HTML नहीं मिल सकता है - ouch सेलेनियम: प्रश्न देखें;) –
- 1. TinyMCE लोड करने के लिए प्रतीक्षा करें
- 2. अजाक्स सामग्री लोड
- 3. एस्प्रेसो लोड करने के लिए WebView के लिए प्रतीक्षा करें
- 4. पेज रीडायरेक्ट के लिए प्रतीक्षा करें सेलेनियम वेबड्राइवर (पायथन)
- 5. सेलेनियम प्रतीक्षा करें। AJAX अनुरोध को समाप्त करने के लिए इंतजार करना है
- 6. अजाक्स लोड सामग्री के साथ अनंत स्क्रॉल करने योग्य Div?
- 7. मैं एक विशिष्ट फ्रेम को लोड करने के लिए कैसे प्रतीक्षा करूं? मैं सेलेनियम वेबड्राइवर 2.24
- 8. Vuejs घटक फेसबुक sdk लोड करने के लिए प्रतीक्षा करें
- 9. सेलेनियम 2: पृष्ठ लोड को बाधित करें
- 10. सेलेनियम वेबड्राइवर तत्व क्लिक पर प्रतीक्षा करें?
- 11. jQuery .load() सामग्री लोड होने तक प्रतीक्षा करें
- 12. सेलेनियम में एक पृष्ठ रीडायरेक्ट के लिए कैसे प्रतीक्षा करें?
- 13. अजाक्स संलग्न लोड
- 14. सेलेनियम या कोयपु तत्व तत्व के लिए प्रतीक्षा करें और
- 15. सेलेनियम वेबड्राइवर पृष्ठ लोड
- 16. अगले फ़ंक्शन ट्रिगर होने से पहले लोड करने के लिए iframe के लिए प्रतीक्षा करें?
- 17. सेलेनियम
- 18. क्यों प्रतीक्षा करने के लिए प्रतीक्षा प्रतीक्षा प्रतीक्षा नहीं है?
- 19. NoClassDefFoundError को ठीक करने के लिए दृष्टिकोण?
- 20. अजाक्स लोड परीक्षण के लिए उपकरण
- 21. वेब पेज 'पूर्ण' लोड के लिए मशीनीकृत प्रतीक्षा कैसे करें?
- 22. jQueryUI संवाद बॉक्स को गतिशील रूप से सामग्री लोड करने के लिए कैसे करें
- 23. सेलेनियम वेबड्राइवर जेएस - स्पष्ट प्रतीक्षा
- 24. सेलेनियम निहित प्रतीक्षा बनाम थ्रेड.sleep()
- 25. प्रतीक्षा पूरा करने के लिए
- 26. अजाक्स/jQuery - पृष्ठ लोड पर एक div में वेबपृष्ठ सामग्री लोड करें?
- 27. प्रतिक्रिया और वेब पैक गर्म लोडर। "जड़ों को लोड करने की प्रतीक्षा ... इंस्पेक्टर को फिर से लोड करने के लिए"
- 28. Puppeteer सभी छवियों को लोड करने के लिए प्रतीक्षा करें, फिर स्क्रीनशॉट लें
- 29. अजाक्स कंट्रोलटूलकिट - विस्तारक - "वर्तमान" दृष्टिकोण क्या है?
- 30. WebBrowser AJAX सामग्री की प्रतीक्षा
धन्यवाद :) क्या यह प्रत्येक वेबसाइट या केवल jQuery का उपयोग कर वेबसाइटों के साथ काम करेगा? –
किसी भी वेबसाइट पर काम करेगा, यह Jquery और JS – LINGS
की मौजूदगी और अनुपस्थिति को संभालता है धन्यवाद - मैं अब इसे –