Opening a file with protractor

前端 未结 4 1755
挽巷
挽巷 2020-12-08 16:15

Every protractor example I can find on the internet seems to use browser.get with a web URI.

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


        
相关标签:
4条回答
  • 2020-12-08 16:28

    I had the same error and fixed by applying Michael Radionov's fix but removing the baseUrl. Here is my setup:

    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 讨论(0)
  • 2020-12-08 16:42

    I am posting the solution I've found in here which helped me run Protractor with a file protocol.

    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:

    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://';
        }
    
        // ...
    };
    

    If you want to run a relative path to your project folder, then you could just use Node.js tools, because Protractor runs in a Node.js environment. For example, __dirname will return an absolute path to a directory where your Protractor config file is saved. As a result use:

    exports.config = {
        // ...
    
        baseUrl: 'file://' + __dirname + '/spec/support/index.html'
    
        // ...
    };
    

    Also, if you application does XHR requests to some endpoints, which are not allowed from file:, you may have to run your test browser with custom flags. In my case it was Chrome:

    exports.config = {
        // ...
    
        capabilities: {
            browserName: 'chrome',
            chromeOptions: {
                // --allow-file-access-from-files - allow XHR from file://
                args: ['allow-file-access-from-files']
            }
        }
    
        // ...
    }
    
    0 讨论(0)
  • 2020-12-08 16:50

    I think there is typo mistake. In "get" method you should include the URL in double quotes "".

    Try using double quotes like below:

    WebDriver driver=new FirefoxDriver();
    driver.get('file:///E:/Programming%20Samples/HTML%20Samples/First%20Program.html');
    
    0 讨论(0)
  • 2020-12-08 16:52

    What is the error log?

    This could be something related to 'Loading' angular. For that you can try browser.driver.ignoreSynchronization = true;

    The error log will surely help in trying to understand the problem.

    0 讨论(0)
提交回复
热议问题