2014-07-18 29 views
15

Mỗi ví dụ về thước đo góc tôi có thể tìm thấy trên internet dường như sử dụng browser.get với URI web.Mở tệp có thước đo

browser.get('http://localhost:8000'); 

Tôi muốn sử dụng Selenium để điều hướng đơn giản để một con đường file:// vì vậy mà tôi không cần một máy chủ web địa phương chạy để thực hiện các bài kiểm tra. Tất cả những gì tôi cần là một trang HTML đơn giản và một số tài sản.

Điều đó dường như không hoạt động.

browser.get('file:///Users/myusername/dev/mpproject/spec/support/index.html'); 

Khi tôi dán URI đó vào cửa sổ trình duyệt của tôi, tôi nhận được trang HTML. Khi tôi cố gắng mở nó với thước đo góc, tôi sẽ hết thời gian chờ.

Làm cách nào để chạy thử nghiệm trên trang này bằng thước đo góc? Câu trả lời lý tưởng sẽ hoạt động với đường dẫn tệp tương đối từ gốc myproject.

Trả lời

-4

Tôi nghĩ có lỗi chính tả. Trong phương thức "get", bạn nên đưa URL vào dấu ngoặc kép "".

Hãy thử sử dụng dấu ngoặc kép như dưới đây:

WebDriver driver=new FirefoxDriver(); 
driver.get('file:///E:/Programming%20Samples/HTML%20Samples/First%20Program.html'); 
+0

[Double và single quotes tương đương với JavaScript] (http://stackoverflow.com/q/242813/574190) để không thể tạo sự khác biệt. Tôi đã thử mặc dù và nó không hoạt động. –

+0

Theo như tôi biết, khi bạn sử dụng phương pháp dirver.get bạn nên cung cấp dấu ngoặc kép ... Khi chúng tôi sử dụng dấu nháy đơn nó than phiền một thông báo lỗi biên dịch. – Uday

0

các bản ghi lỗi là gì?

Điều này có thể liên quan đến góc 'Đang tải'. Để làm điều đó, bạn có thể thử browser.driver.ignoreSynchronization = true;

Nhật ký lỗi chắc chắn sẽ giúp bạn trong việc tìm hiểu sự cố.

13

Tôi đang đăng giải pháp mà tôi đã found in here giúp tôi chạy Thước đo bằng giao thức tệp.

Theo mặc định, thước đo sử dụng data:text/html,<html></html> như resetUrl, nhưng location.replace từ ("tài nguyên địa phương không được phép", chúng tôi sẽ nhận được thông báo lỗi) data: để giao thức file: không được phép, vì vậy chúng tôi thay thế resetUrl với một với file: giao thức:

exports.config = { 
    // ... 

    baseUrl: 'file:///absolute/path/to/your/project/index.html', 

    onPrepare: function() { 

     // By default, Protractor use data:text/html,<html></html> as resetUrl, but 
     // location.replace from the data: to the file: protocol is not allowed 
     // (we'll get ‘not allowed local resource’ error), so we replace resetUrl with one 
     // with the file: protocol (this particular one will open system's root folder) 
     browser.resetUrl = 'file://'; 
    } 

    // ... 
}; 

Nếu bạn muốn chạy một đường dẫn tương đối đến thư mục dự án của bạn, sau đó bạn chỉ có thể sử dụng công cụ Node.js, vì thước đo chạy trong một môi trường Node.js. Ví dụ: __dirname sẽ trả lại đường dẫn tuyệt đối tới thư mục nơi tệp cấu hình Thước đo được lưu. Là một sử dụng kết quả:

exports.config = { 
    // ... 

    baseUrl: 'file://' + __dirname + '/spec/support/index.html' 

    // ... 
}; 

Ngoài ra, nếu bạn ứng dụng không yêu cầu XHR để một số thiết bị đầu cuối, mà không được phép từ file:, bạn có thể phải chạy trình duyệt thử nghiệm của bạn với cờ tùy chỉnh. Trong trường hợp của tôi đó là Chrome:

exports.config = { 
    // ... 

    capabilities: { 
     browserName: 'chrome', 
     chromeOptions: { 
      // --allow-file-access-from-files - allow XHR from file:// 
      args: ['allow-file-access-from-files'] 
     } 
    } 

    // ... 
} 
+1

Ban phước cho bạn để sửa lỗi tuyệt vời này! Tất cả mọi thứ là chính xác những gì tôi cần –

+0

Làm cách nào để mở tệp html cục bộ trong đặc tả thử nghiệm của tôi sau đó? Tôi đã thử không sử dụng 'browser.get' và' browser.get() 'mà không có đối số, giả sử nó sẽ mở baseUrl được chỉ định. Nhưng không làm việc nó chỉ không tải trang và do đó các bài kiểm tra thất bại. – CGFoX

+0

Trên thực tế, nó hoạt động với 'browser.get ('')' nhưng chỉ sau khi thêm 'browser.ignoreSynchronization = true;' inside 'onPrepare'. – CGFoX

4

tôi đã có lỗi tương tự và cố định bằng cách áp dụng sửa chữa Michael Radionov nhưng tháo baseUrl. Đây là thiết lập của tôi:

protractor.config.js:

exports.config = { 

    capabilities: { 
    browserName: 'chrome' 
    }, 

    specs: [ 
    '*.js' 
    ], 

    onPrepare: function() { 
    // By default, Protractor use data:text/html,<html></html> as resetUrl, but 
    // location.replace from the data: to the file: protocol is not allowed 
    // (we'll get ‘not allowed local resource’ error), so we replace resetUrl with one 
    // with the file: protocol (this particular one will open system's root folder) 
    browser.ignoreSynchronization = true; 
    browser.waitForAngular(); 
    browser.sleep(500); 
    browser.resetUrl = 'file:///'; 
    } 

}; 

e2etest.js:

'use strict'; 

describe("Buttons' tests are started", function() { 

    it('Should retrieve 20 records into table', function() { 

     browser.get('file:///C:/Users/path_to_file/index.html'); 

     /* Test codes here */ 

    }); 

}); 
+0

Điều này giải quyết được vấn đề của tôi. Tôi vẫn sẽ kết hợp nó với một baseUrl để có các URL đẹp hơn trong các đặc tả kiểm tra. Đối với tôi, nó cũng làm việc mà không có chức năng ngủ, mà có thể tăng tốc độ thử nghiệm. – CGFoX

Các vấn đề liên quan