Javascript 在safari上运行量角器测试,例如;在页面上找不到角度https://angularjs.org/"

Javascript 在safari上运行量角器测试,例如;在页面上找不到角度https://angularjs.org/",javascript,angularjs,selenium,safari,protractor,Javascript,Angularjs,Selenium,Safari,Protractor,我尝试在Safari上运行量角器测试,但即使是一个官方示例(我在conf.js和todo-spec.js文件下面附上)也有问题 当我设置browser.ignoreSynchronization=true时;()然后测试工作,但我不能利用量角器 使用角度1.6.4 运行测试日志: $ node ./node_modules/protractor/built/cli.js conf.js --browser safari (node:5778) DeprecationWarning: os.t

我尝试在Safari上运行量角器测试,但即使是一个官方示例(我在conf.js和todo-spec.js文件下面附上)也有问题

当我设置browser.ignoreSynchronization=true时;()然后测试工作,但我不能利用量角器

使用角度1.6.4


  • 运行测试日志:

    $ node ./node_modules/protractor/built/cli.js conf.js --browser safari
    (node:5778) DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead.
    [09:49:28] I/hosted - Using the selenium server at http://MAC_IP:4444/wd/hub
    [09:49:28] I/launcher - Running 1 instances of WebDriver
    Started
    [09:49:41] E/protractor - Could not find Angular on page https://angularjs.org/ : angular never provided resumeBootstrap
    F
    
    Failures:
    1) angularjs homepage todo list should add a todo
      Message:
        Failed: Angular could not be found on the page https://angularjs.org/. If this is not an Angular application, you may need to turn off waiting for Angular. Please see https://github.com/angular/protractor/blob/master/docs/timeouts.md#waiting-for-angular-on-page-load
      Stack:
        Error: Angular could not be found on the page https://angularjs.org/. If this is not an Angular application, you may need to turn off waiting for Angular. Please see https://github.com/angular/protractor/blob/master/docs/timeouts.md#waiting-for-angular-on-page-load
            at /home/tester/proj/js/node_modules/protractor/built/browser.js:506:23
            at ManagedPromise.invokeCallback_ (/home/tester/proj/js/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:1379:14)
            at TaskQueue.execute_ (/home/tester/proj/js/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2913:14)
            at TaskQueue.executeNext_ (/home/tester/proj/js/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2896:21)
            at asyncRun (/home/tester/proj/js/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2775:27)
            at /home/tester/proj/js/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:639:7
            at process._tickCallback (internal/process/next_tick.js:103:7)
        From: Task: Run it("should add a todo") in control flow
            at Object.<anonymous> (/home/tester/proj/js/node_modules/jasminewd2/index.js:79:14)
        From asynchronous test: 
        Error
            at Suite.<anonymous> (/home/tester/proj/js/todo-spec.js:2:3)
            at Object.<anonymous> (/home/tester/proj/js/todo-spec.js:1:1)
            at Module._compile (module.js:571:32)
            at Object.Module._extensions..js (module.js:580:10)
            at Module.load (module.js:488:32)
            at tryModuleLoad (module.js:447:12)
    
    1 spec, 1 failure
    Finished in 11.68 seconds
    [09:49:41] I/launcher - 0 instance(s) of WebDriver still running
    [09:49:41] I/launcher - safari #01 failed 1 test(s)
    [09:49:41] I/launcher - overall: 1 failed spec(s)
    [09:49:41] E/launcher - Process exited with error code 1
    
  • todo-spec.js:

    describe('angularjs homepage todo list', function() {
      it('should add a todo', function() {
        browser.get('https://angularjs.org');
    
        element(by.model('todoList.todoText')).sendKeys('write first protractor test');
        element(by.css('[value="add"]')).click();
    
        var todoList = element.all(by.repeater('todo in todoList.todos'));
        expect(todoList.count()).toEqual(3);
        expect(todoList.get(2).getText()).toEqual('write first protractor test');
    
        // You wrote your first test, cross it off the list
        todoList.get(2).element(by.css('input')).click();
        var completedAmount = element.all(by.css('.done-true'));
        expect(completedAmount.count()).toEqual(2);
      });
    });
    

我知道Safari 10中的异步内容存在一些问题,请参见量角器git。它描述了Safari Desktop的解决方案


希望它能帮助你/给你足够的信息

我知道Safari 10中的异步内容存在一些问题,请参见量角器git。它描述了Safari Desktop的解决方案


希望它能帮助你/给你足够的信息

您使用的是哪个版本的Safari?设置
browser.ignoreSynchronization=true
将告诉量角器不要等待Angular完成页面/Angular内容的加载。默认情况下,量角器将询问Angular是否加载了所需的数据/进程。Safari 10.1(11603.1.30.0.34)您使用的是哪个版本的Safari?设置
browser.ignoreSynchronization=true
将告诉量角器不要等待Angular完成页面/Angular内容的加载。默认情况下,量角器将询问Angular是否加载了所需的数据/进程。Safari 10.1(11603.1.30.0.34)这与ignoreSynchronization具有相同的效果。我需要挂接一些事件或类似的东西…这会带来与ignoreSynchronization相同的效果。我需要参与一些事件或类似的事情。。。
exports.config = {
    framework: 'jasmine2',
    seleniumAddress: 'http://MAC_IP:4444/wd/hub',
    specs: ['todo-spec.js']
};
describe('angularjs homepage todo list', function() {
  it('should add a todo', function() {
    browser.get('https://angularjs.org');

    element(by.model('todoList.todoText')).sendKeys('write first protractor test');
    element(by.css('[value="add"]')).click();

    var todoList = element.all(by.repeater('todo in todoList.todos'));
    expect(todoList.count()).toEqual(3);
    expect(todoList.get(2).getText()).toEqual('write first protractor test');

    // You wrote your first test, cross it off the list
    todoList.get(2).element(by.css('input')).click();
    var completedAmount = element.all(by.css('.done-true'));
    expect(completedAmount.count()).toEqual(2);
  });
});