Protractor / Jasmine timing out on headless chromium - Error: Timeout - Async callback

Protractor / Jasmine timing out on headless chromium - Error: Timeout - Async callback

大家好,我正在尝试 运行 带量角器和茉莉花的无头铬。我已经为 firefox 和 chrome 进行了所有设置和工作。当我 运行 firefox headless 它工作时...当我尝试 运行ning chromium headless 它最终超时。寻求一些帮助来解决这个问题。

我得到的错误是:

Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.

现在我已经在线阅读了一百万篇文章并尝试增加超时时间并将完成添加到函数中...

这是我当前的代码:

Conf.js - 这有一堆我在网上找到的附加参数和设置。我几乎尝试了所有变体,但都没有成功..

  exports.config = {
    framework: 'jasmine2',
    seleniumAddress: 'http://localhost:4444/wd/hub',
    specs: ['spec.js'],
    allScriptsTimeout: 5000000,
    capabilities: {
        'directConnect': true,
        'browserName': 'chrome',
        "goog:chromeOptions": {
            args: ["--headless", "--remote-debugging-port=9222", "--verbose", "--disable-gpu", "--disable-web-security", "--window-size=800x600"],
            'binary': "/usr/bin/chromium-browser"
        }
    }
  };

Spec.js - 使用 console.logs 直接离开他们的网站。所有的console.logs按照下面的顺序3,1,2打印出来。我不确定这是正确的吗? describe 应该等待它完成吗?几乎感觉我的它永远不会回来...

    describe('angularjs homepage todo list', function() {
  it('should add a todo', function(done) {
    console.log("WOOO1");
    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);
    console.log("WOO2");

  }, 15000);
  console.log("WOO3");
});

在此之后我发现了一些其他发现......当我去 localhost:9222 我看到

   Inspectable WebContents
data:text/html,<html></html>

数据:text/html、 是一个 link,如果单击它,我将转到远程 chrome正在加载...数据的调试器:text/html,。这就是我认为的问题所在。为什么这从未真正加载 angular 网站?

也许我错了,但有人知道如何理解吗?

编辑: 额外的有用信息。 我在用 铬 79.0.3945.130 chrome驱动程序 79.0.3945.36

茉莉花v3.5.0 茉莉花核心 v3.5.0

量角器 5.4.3

谢谢

像这样在您的配置中添加 allScriptTimeOut:

exports.config = {
    capabilities: {
        'browserName': 'chrome'
    },
    framework: 'jasmine',
    specs: ['example_spec.js'],
    allScriptsTimeout: 9000
};

希望本文link对您有所帮助 https://www.protractortest.org/#/timeouts.

最终对我有用的配置

 exports.config = {
    framework: 'jasmine',
    allScriptsTimeout: 9000,
    seleniumAddress: 'http://localhost:4444/wd/hub',
    specs: ['spec.js'],

    capabilities: {
    'directConnect': true,
    'browserName': 'chrome',
    "goog:chromeOptions": {
    args: ["--headless", "--remote-debugging-port=9222", "--verbose", "--disable-gpu", "--disable-web-security", "--window-size=800x600"],
    'binary': "path to chrome"
    }
    }
    };