मुझे आश्चर्य है कि क्या वॉटर-वेबड्राइवर किसी कंसोल त्रुटियों के आउटपुट को लॉग करने की क्षमता के रूप में है? यह ब्राउज़र में मैन्युअल रूप से कंसोल खोलने और पेज लोड के रूप में जेएस त्रुटियों के लिए देखकर बराबर होगा। क्या मैं इसे वॉटर-वेबड्राइवर और लॉग/त्रुटि के माध्यम से कैप्चर कर सकता हूं?क्या वॉटर-वेबड्राइवर कंसोल त्रुटियों को कैप्चर कर सकता है?
उत्तर
ककड़ी के साथ संयोजन में वॉटर-वेबड्राइवर का उपयोग करते समय, त्रुटियों, यदि कोई हो, तो एक HTML फ़ाइल में आउटपुट जो बहुत अच्छी तरह से स्वरूपित है और इसमें वॉटर-वेबड्रिवर त्रुटियां शामिल हैं।
यह cucumber.yml में आपकी डिफ़ॉल्ट प्रोफ़ाइल के लिए निम्न झंडे जोड़कर पूरा किया जा सकता: इस फाइल here. पर
--color --format pretty --format html -o results.html
अधिक जानकारी यहाँ कुछ background on Cucumber है।
हालांकि, अगर आप कंसोल से केवल watir-webdriver उपयोग कर रहे हैं, तो आप watir-webdriver त्रुटियों एक फाइल करने के लिए करने से अनुप्रेषित कर सकते हैं निम्नलिखित:
$ ruby your_watir_script.rb 2> watir_debug.log #watir outputs errors as stderr
ज्यादातर मामलों में, अगर में कुछ watir विफल रहता है (उदाहरण के लिए एक तत्व नहीं मिल सकता है) तो उसके बाद सब कुछ भी असफल हो जाएगा, यही कारण है कि ककड़ी की तरह कुछ ऐसा करने के लिए उपयोगी है जो परिदृश्य के आधार पर आपके स्वचालन को चलाता है।
यदि यह किसी के लिए उपयोगी हो जाएगा - इस समाधान काम करना चाहिए:
def check_console_log
console_log = @browser.driver.manage.logs.get(:browser)
if console_log != nil
raise(console_log)
end
end
क्या आप वाकई सही हैं? मुझे दस्तावेज में 'get_log' नहीं दिख रहा है? –
निश्चित रूप से। अब मैं अपने प्रोजेक्ट में इस कार्यक्षमता का उपयोग कर रहा हूं, चरण विफल होने के बाद मैं कंसोल लॉग और लॉग फ़ाइल लिख रहा हूं। इस विधि _module Selenium_ _module में वर्णित Remote_ 'डीईएफ़ getLog (प्रकार) डेटा _module WebDriver_ = निष्पादित करें: getLog, {},: प्रकार => प्रकार।to_s ऐरे (डेटा) .map do | l | LogEntry.new l.fetch ('level'), l.fetch ('timestamp'), l.fetch ('message') अंत अंत ' – Kirikami
मैं Kirikami's answer पर मेरे समाधान आधारित, कोई ककड़ी आवश्यक। यह दृष्टिकोण केवल जावास्क्रिप्ट कंसोल Errors
प्रिंट करता है (कोई चेतावनी, जानकारी, लॉग, या डीबग नहीं)।
def print_js_errors
log = @browser.driver.manage.logs.get(:browser)
errors = log.select{ |entry| entry.level.eql? 'SEVERE' }
if errors.count > 0
javascript_errors = errors.map(&:message).join("\n")
raise javascript_errors
end
end
उसके बाद, आप rspec उपयोग कर रहे हैं, तो आप ऐसा कर सकते हैं:
RSpec.configure do |config|
config.after :each do
print_js_errors
end
end
सकारात्मक:
- आप अब भी इस परीक्षण के लिए RSpec के सामान्य उत्पादन प्राप्त
Pass
- आप अभी भी
Fail
(उदाहरण के लिए टाइमआउट, तत्व नहीं मिला, आदि) के लिए वॉटर-वेबड्राइवर द्वारा फेंकने वाले किसी भी त्रुटि संदेश प्राप्त करें - जब एक जावास्क्रिप्ट त्रुटि फेंक दिया जाता है, यह RSpec परीक्षण के परिणाम उत्पादन में जुड़ जाता है
विपक्ष:
- पहले दो
print_js_errors
की तर्ज प्रत्येक परीक्षा
तो इन के बाद क्रियान्वित कर रहे हैं त्रुटियां ऐसी त्रुटियां हैं जो वॉटर स्वयं सही फेंकता है? क्या वॉटर पहले से ही पृष्ठ से जावास्क्रिप्ट त्रुटियों को कैप्चर करता है और उन्हें लॉग करता है? – negativebase