2011-09-07 41 views

Trả lời

1

Khi sử dụng trình điều khiển web-wat kết hợp với Dưa chuột, các lỗi, nếu có, xuất ra một tệp html được định dạng rất tốt và bao gồm các lỗi trình điều khiển webir.

Điều này có thể được thực hiện bằng cách thêm cờ sau để cấu hình mặc định của bạn trong cucumber.yml:

--color --format pretty --format html -o results.html Thông tin thêm về tập tin này here. Dưới đây là một số background on Cucumber.

Tuy nhiên, nếu bạn đang sử dụng chỉ watir-webdriver từ giao diện điều khiển, bạn có thể chuyển hướng lỗi watir-webdriver vào một tập tin bằng cách làm như sau:

$ ruby your_watir_script.rb 2> watir_debug.log #watir outputs errors as stderr

Trong hầu hết các trường hợp, nếu một cái gì đó trong watir thất bại (ví dụ như một phần tử không thể tìm thấy) thì mọi thứ sau đó cũng sẽ thất bại, đó là lý do tại sao nó có ích để có một cái gì đó như Cucumber lái tự động hóa của bạn trên cơ sở kịch bản.

+2

Vì vậy, những lỗi nào là những lỗi mà bản thân watir ném chính xác? Có watir đã bắt lỗi Javascript từ trang và đăng nhập chúng? – negativebase

2

Nếu nó sẽ rất hữu ích cho một ai đó - giải pháp này nên làm việc:

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

Bạn có chắc chắn điều này đúng không? Tôi không thấy 'get_log' trong tài liệu? –

+0

Chắc chắn. Bây giờ tôi đang sử dụng chức năng này trong dự án của tôi, sau khi bước không thành công tôi đang kiểm tra nhật ký giao diện điều khiển và ghi tệp nhật ký. Phương pháp này được mô tả trong _module Selenium_ _module WebDriver_ _module Remote_ 'def getLog (loại) data = execute: getLog, {},: type => type.to_s Mảng (dữ liệu) .map do | l | LogEntry.new l.fetch ('level'), l.fetch ('dấu thời gian'), l.fetch ('message') kết thúc end' – Kirikami

1

tôi dựa trên giải pháp của tôi trên Kirikami's answer, không có dưa chuột cần thiết. Cách tiếp cận này chỉ in bảng điều khiển javascript Errors (không có cảnh báo, thông tin, nhật ký hoặc gỡ lỗi).

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 

Sau đó, nếu bạn đang sử dụng rspec, bạn có thể làm điều này:

RSpec.configure do |config| 
    config.after :each do 
    print_js_errors 
    end 
end 

Ưu điểm:

  1. Bạn vẫn nhận được kết quả bình thường RSpec cho bài kiểm tra mà Pass
  2. Bạn vẫn nhận được bất kỳ thông báo lỗi nào được ném bởi watir-webdriver cho các bài kiểm tra Fail (ví dụ: thời gian chờ, phần tử không tìm thấy, v.v.)
  3. Khi một lỗi javascript được ném ra, nó được thêm vào RSpec kết quả kiểm tra đầu ra

Nhược điểm:

  1. Hai dòng đầu tiên của print_js_errors được thực hiện sau mỗi bài kiểm tra
Các vấn đề liên quan