के साथ टाइमआउट त्रुटियों को पकड़ना मेरे पास साइट से मुझे लॉग आउट करने के लिए एक मशीनीकरण फ़ंक्शन है लेकिन बहुत दुर्लभ अवसरों पर यह मुझे बाहर करता है। फ़ंक्शन में एक विशिष्ट पृष्ठ पर जाकर, और फिर लॉगआउट बटन पर क्लिक करना शामिल है। कभी-कभी मैकेनाइजेशन लॉगआउट पेज पर जाकर या लॉगआउट बटन पर क्लिक करते समय एक टाइमआउट पीड़ित होता है, कोड क्रैश हो जाता है। इसलिए मैंने एक छोटा बचाव किया और ऐसा लगता है कि कोड के पहले भाग के नीचे देखा गया है।रूबी मशीनीकरण
def logmeout(agent)
begin
page = agent.get('http://www.example.com/')
agent.click(page.link_with(:text => /Log Out/i))
rescue Timeout::Error
puts "Timeout!"
retry
end
end
मान लिया जाये कि मैं बचाव सही ढंग से समझ है, यह है, भले ही बस क्लिक का समय समाप्त हो पर दोनों कार्यों करेंगे तो प्रयास में कुशल मैं कर रहा हूँ, तो सोच रहा था होना करने के लिए:
def logmeout(agent)
page = agent.get('http://www.example.com/')
agent.click(page.link_with(:text => /Log Out/i))
end
बचाव के साथ
Logmeout मैं इस स्थिति में एक proc का उपयोग कर सकता हूं और इसे एक कोड ब्लॉक पास कर सकता हूं। इस काम की तरह कुछ होगा: मेरी trythreetimes समारोह में
def trythreetimes
tries = 0
begin
yield
rescue
tries += 1
puts "Trying again!"
retry if tries <= 3
end
end
def logmeout(agent)
trythreetimes {page = agent.get('http://www.example.com/')}
trythreetimes {agent.click(page.link_with(:text => /Log Out/i))}
end
नोट मैं सामान्य बचाव जहां उसे छोड़ा तो समारोह अधिक फिर से प्रयोग करने योग्य हो जाएगा।
कोई भी मदद प्रदान करने के लिए बहुत बहुत धन्यवाद, मुझे पता है कि यहां कुछ अलग प्रश्न हैं लेकिन वे सभी चीजें हैं जिन्हें मैं सीखने की कोशिश कर रहा हूं!
उत्तर के लिए धन्यवाद! आपका पसंदीदा कोड यह मान रहा है कि आपको स्रोत कोड के माध्यम से सही लिंक मिला है? – Sean
अच्छा, एचटीएमएल स्रोत के अंदर एक लिंक खोजना वास्तव में मुश्किल नहीं है। मैं इस समाधान को पसंद करता हूं क्योंकि समय और स्मृति की आवश्यकता होती है। लेकिन आप अपने समाधान का उपयोग ['read_timeout'] (http://mechanize.rubyforge.org/Mechanize/HTTP/Agent.html#read_timeout=) सेट के साथ कर सकते हैं। यदि आप इसे एकाधिक डोमेन के लिए उपयोग करते हैं तो यह एक अच्छा विचार है। बस कोड की दूसरी शांति संपादित करें और इसे मुख्य पृष्ठ तक पहुंचने के लिए बदलें और यदि आप चाहें तो लिंक पर क्लिक करें। – cz3ch
ओह क्षमा करें, मैंने वास्तव में आपके प्रश्न का उत्तर नहीं दिया। हां यह मान रहा है कि आपको स्रोत कोड के माध्यम से सही लिंक मिला है ... – cz3ch