2011-09-07 10 views
15

मुझे आश्चर्य है कि क्या वॉटर-वेबड्राइवर किसी कंसोल त्रुटियों के आउटपुट को लॉग करने की क्षमता के रूप में है? यह ब्राउज़र में मैन्युअल रूप से कंसोल खोलने और पेज लोड के रूप में जेएस त्रुटियों के लिए देखकर बराबर होगा। क्या मैं इसे वॉटर-वेबड्राइवर और लॉग/त्रुटि के माध्यम से कैप्चर कर सकता हूं?क्या वॉटर-वेबड्राइवर कंसोल त्रुटियों को कैप्चर कर सकता है?

उत्तर

1

ककड़ी के साथ संयोजन में वॉटर-वेबड्राइवर का उपयोग करते समय, त्रुटियों, यदि कोई हो, तो एक 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 विफल रहता है (उदाहरण के लिए एक तत्व नहीं मिल सकता है) तो उसके बाद सब कुछ भी असफल हो जाएगा, यही कारण है कि ककड़ी की तरह कुछ ऐसा करने के लिए उपयोगी है जो परिदृश्य के आधार पर आपके स्वचालन को चलाता है।

+2

तो इन के बाद क्रियान्वित कर रहे हैं त्रुटियां ऐसी त्रुटियां हैं जो वॉटर स्वयं सही फेंकता है? क्या वॉटर पहले से ही पृष्ठ से जावास्क्रिप्ट त्रुटियों को कैप्चर करता है और उन्हें लॉग करता है? – negativebase

2

यदि यह किसी के लिए उपयोगी हो जाएगा - इस समाधान काम करना चाहिए:

def check_console_log 
    console_log = @browser.driver.manage.logs.get(:browser) 
    if console_log != nil 
     raise(console_log) 
    end 
end 
+0

क्या आप वाकई सही हैं? मुझे दस्तावेज में 'get_log' नहीं दिख रहा है? –

+0

निश्चित रूप से। अब मैं अपने प्रोजेक्ट में इस कार्यक्षमता का उपयोग कर रहा हूं, चरण विफल होने के बाद मैं कंसोल लॉग और लॉग फ़ाइल लिख रहा हूं। इस विधि _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

1

मैं 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 

सकारात्मक:

  1. आप अब भी इस परीक्षण के लिए RSpec के सामान्य उत्पादन प्राप्त Pass
  2. आप अभी भी Fail (उदाहरण के लिए टाइमआउट, तत्व नहीं मिला, आदि) के लिए वॉटर-वेबड्राइवर द्वारा फेंकने वाले किसी भी त्रुटि संदेश प्राप्त करें
  3. जब एक जावास्क्रिप्ट त्रुटि फेंक दिया जाता है, यह RSpec परीक्षण के परिणाम उत्पादन में जुड़ जाता है

विपक्ष:

  1. पहले दो print_js_errors की तर्ज प्रत्येक परीक्षा
संबंधित मुद्दे