2012-05-15 24 views
23

का उपयोग कर पेज लोड टाइमआउट कैसे सेट करें मैं सी # के साथ फ़ायरफ़ॉक्स ब्राउज़र बनाने और प्रबंधित करने के लिए सेलेनियम 2.20 वेबड्राइवर का उपयोग कर रहा हूं। एक पृष्ठ पर जाएँ करने के लिए, मैं निम्नलिखित कोड का उपयोग करें, URL पर जाकर से पहले चालक समय समाप्ति की स्थापना:सेलेनियम वेबड्राइवर - सी #

driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); // Set implicit wait timeouts to 5 secs 
driver.Manage().Timeouts().SetScriptTimeout(new TimeSpan(0, 0, 0, 5)); // Set script timeouts to 5 secs 
driver.Navigate().GoToUrl(myUrl); // Goto page url 

समस्या यह है कि कुछ ऐसे पृष्ठ हमेशा के लिए ले लोड करने के लिए, और ऐसा लगता है कि एक पेज के लिए डिफ़ॉल्ट टाइमआउट लोड करने के लिए है सेलेनियम वेबड्राइवर का उपयोग 30 सेकंड है, जो बहुत लंबा है। और मुझे विश्वास नहीं है कि मैं जिस समय पर जा रहा हूं, वह GoToUrl() विधि का उपयोग कर किसी पृष्ठ की लोडिंग पर लागू होता है।

तो मैं यह पता लगाने की कोशिश कर रहा हूं कि पृष्ठ को लोड करने के लिए टाइमआउट कैसे सेट करें, हालांकि, मुझे कोई भी संपत्ति या विधि नहीं मिलती जो वास्तव में काम करती है। जब मैं किसी तत्व पर क्लिक करता हूं तो डिफ़ॉल्ट 30 सेकंड टाइमआउट भी लागू होता है।

वहाँ एक विशिष्ट मूल्य के पृष्ठ लोड समय समाप्ति सेट करने के लिए इतना है कि जब मैं GoToUrl() विधि कॉल यह केवल आगे बढ़ने से पहले मेरी निर्दिष्ट समय इंतजार करेंगे कोई तरीका है?

+0

क्या आप सुनिश्चित हैं कि 'GoToUrl()' पृष्ठ लोड होने के लिए प्रतीक्षा करता है? मेरा अनुभव यह है कि यह नहीं करता है। लेकिन यह सिर्फ एक भावना है, एक तथ्य नहीं। –

+0

हाँ, मैं हूँ 100% यकीन है कि फोन करने GoToUrl() ब्लॉक निष्पादन जब तक पूरी तरह से पेज लोड हो रहा है किया जाता है, और मैं इस विधि फोन करने के लिए 30 सेकंड की डिफ़ॉल्ट टाइमआउट मापा जाता है 30 सेकंड के निष्पादन के लिए जारी रहेगा के बाद, और मैं कोशिश कर रहा हूँ किसी भी तरह से 30 सेकंड के उस डिफ़ॉल्ट टाइमआउट को कम करने के लिए। – KabanaSoft

+0

मैं समान प्रश्न पोस्ट किया है: http://stackoverflow.com/questions/11958701/what-is-the-best-approach-for-timeout-using-selenium-using-webdriver –

उत्तर

3

इसके साथ आप स्पष्ट रूप से प्रतीक्षा घोषित करने में सक्षम होना चाहिए।

WebDriverWait wait = new WebDriverWait(browser, new TimeSpan(time in seconds)); 
wait.until(Your condition) 

आप भी निहित प्रतीक्षा समय

driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10)); 

बदल सकता है मुझे लगता है कि सी # में वाक्य रचना है। (सुनिश्चित करें कि करने के लिए नहीं)

माणिक में यह

@driver.manage.timeouts.implicit_wait = 30 
@wait = Selenium::WebDriver::Wait.new(:timeout => 30) 
+1

यह काम नहीं करेगा क्योंकि निष्पादन GoToUrl() विधि द्वारा अवरुद्ध है, इसलिए जब तक कि विधि पूरी नहीं हो जाती है या समय समाप्त नहीं होता है, तब तक मैं किसी भी कोड को निष्पादित नहीं कर सकता, जो डिफ़ॉल्ट रूप से 30 सेकंड लगता है। हालांकि प्रतिक्रिया के लिए धन्यवाद। – KabanaSoft

+2

इसलिए आपको अपना अंतर्निहित प्रतीक्षा समय बदलना होगा - 'driver.Manage()। टाइमआउट्स()। ImplicitlyWait (TimeSpan.FromSeconds (5)); 5 सेकंड कम करें कि आप कितनी कम चाहें। यह गेटोरल पर आपके प्रतीक्षा समय को प्रभावित करेगा। – Amey

+1

आप 'wait.until (driver.Navigate()। GoToUrl (myUrl)) को भी आजमा सकते हैं; // गोटो पेज यूआरएल 'जहां आपने गेटोउआर कमांड को निष्पादित करने के लिए समय को स्पष्ट रूप से परिभाषित किया है – Amey

0

पृष्ठ लोड समय समाप्ति नेट बाइंडिंग में अभी तक लागू नहीं कर रहे हैं। उम्मीद है कि वे जल्द ही होंगे।

3

मुझे इस समस्या का समाधान मिला। एक नया FirefoxDriver बनाते समय, निर्माता है कि आप एक आदेश टाइमआउट जो अधिक से अधिक समय प्रत्येक आदेश के लिए प्रतीक्षा करने के लिए है निर्दिष्ट कर सकते हैं में भार के हैं, और यह जब GoToUrl() विधि बुला काम कर रहा है:

driver = new FirefoxDriver(new FirefoxBinary(), profile, new TimeSpan(0, 0, 0, timeoutSeconds)); 
संदर्भ के लिए FirefoxDriver निर्माता प्रलेखन के लिए

लिंक: http://selenium.googlecode.com/svn/trunk/docs/api/dotnet/html/M_OpenQA_Selenium_Firefox_FirefoxDriver__ctor_2.htm

आशा इस किसी और ने इस समस्या में चलाता है मदद करता है।

+0

मैंने इसी तरह के प्रश्न पोस्ट किए हैं: http://stackoverflow.com/questions/11958701/what-is-the-best-approach-for-timeout-using-selenium-using-webdriver –

28

मामले में यह किसी को अब भी इस का जवाब की तलाश में, सी # WebDriver एपीआई अब उचित विधि में क्या है में मदद करता है।

driver.Manage().Timeouts().SetPageLoadTimeout(timespan) 
+3

मैं चाहता हूं कि किसी के पास स्पष्ट विवरण हो पृष्ठ लोड टाइमआउट कैसे अंतर्निहित प्रतीक्षा से अलग है। जब पृष्ठ लोड होता है लेकिन कोई तत्व नहीं होता है? – JasonCoder

+7

सी # इंटेलिसेंस 'ImplicitlyWait' पृष्ठ पर किसी तत्व की खोज करने की अवधि है,' SetPageLoadTimeout' URL को लोड करने के लिए प्रतीक्षा करने की अवधि है, और 'SetScriptTimeout' एसिंक जेएस के लिए प्रतीक्षा करने की समय है भार। – jpvantuyl

7
driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(5); 

नोट: driver.Manage().Timeouts().SetPageLoadTimeout(TimeSpan.FromSeconds(5)) अब मान्य नहीं है।

संबंधित मुद्दे