जब मैं फ़ायरफ़ॉक्स ड्रायवर जैसे वेबड्राइवर में प्रॉक्सी का उपयोग कर रहा हूं, यदि प्रॉक्सी खराब है तो प्राप्त विधि हमेशा के लिए अवरुद्ध हो जाएगी। मैंने कुछ टाइमआउट पैरामीटर सेट किए हैं, लेकिन यह काम नहीं कर सका।मैं सेलेनियम वेबड्राइवर को टाइमआउट कैसे प्राप्त करूं?
यह मेरा कोड है:
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("general.useragent.override", ua);
Proxy p = new Proxy();
p.setHttpProxy(proxy);
profile.setProxyPreferences(p);
profile.setEnableNativeEvents(true);
// create a driver
WebDriver driver = new FirefoxDriver(profile);
driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
driver.manage().timeouts().setScriptTimeout(30, TimeUnit.SECONDS);
driver.get("www.sina.com.cn")
कॉल driver.get को हमेशा के लिए अवरुद्ध कर देगा, लेकिन मैं इसे 30 सेकंड के लिए प्रतीक्षा करने के लिए और अगर पेज लोड नहीं है तो एक अपवाद फेंक चाहते हैं।
जैसा कि मैंने लिखा है, यह उत्तर सही के रूप में स्वीकार किया जाता है। हालांकि, झोंगिंग [नीचे उल्लिखित] के रूप में (http://stackoverflow.com/a/10827070/705157), यह समाधान लोड को बहुत लंबे समय तक अवरुद्ध करता है। मुझे लगता है कि वास्तविक उत्तर [उपयोगकर्ता 1102631] होना चाहिए (http://stackoverflow.com/a/12915015/705157)। –
सहमत हैं, यह उत्तर सेलेनियम चलाए जाने वाले प्रत्येक आदेश में 30 सेकंड की देरी जोड़ देगा। इस तरह मनमाने ढंग से देरी परीक्षण करने के लिए एक बहुत महंगा और आम तौर पर अविश्वसनीय तरीका है। आमतौर पर 0 तक अंतर्निहित प्रतीक्षा सेट करना और प्रत्येक क्रिया के परिणामों के लिए स्पष्ट प्रतीक्षा करना बेहतर होता है। यह अधिक भरोसेमंद और आम तौर पर तेज़ है क्योंकि आप केवल तब तक प्रतीक्षा करते हैं जब तक कि पूर्णकालिक सीमा के बजाय कार्रवाई न हो जाए। – ajsutton
@ajsutton आप स्पष्ट रूप से कैसे प्रतीक्षा करते हैं? – Thufir