量角器“在等待量角器与页面同步时出错”浏览Angular网站

Ist*_*har 3 javascript selenium protractor angular

我正在尝试按照量角器官方网站上的量角器教程进行操作,但我什至无法完成步骤0。

我在6.0.0版中使用量角器和webdriver-manager。我的SO是Linux(Ubuntu 18.06),而我的Chrome是最新的(73.0.3683.86)。安装量角器后,我不得不降级默认安装的chromedriver,因为它期望我安装Chrome74。我通过执行降级了它webdriver-manager --versions.chrome 73.0.3683.68

之后,我一直遵循本教程的步骤0。我有configuration.js文件和test-spec.js文件,如下所示:

configuration.js

 exports.config = {
      seleniumAddress: 'http://localhost:4444/wd/hub',
      specs: ['test-spec.js']
    };
Run Code Online (Sandbox Code Playgroud)

测试规范

describe('Protractor Demo App', function() {
    it('should have a title', function() {
        browser.get('http://juliemr.github.io/protractor-demo/');
        expect(browser.getTitle()).toEqual('Super Calculator');
    });
});
Run Code Online (Sandbox Code Playgroud)

当我运行protactor时protractor configuration.js,出现以下错误:

[15:15:13]我/托管-在http:// localhost:4444 / wd / hub上使用Selenium服务器
弃用:不建议直接设置randomizeTests,请在`configure`中使用random选项
弃用:不建议直接在Env上设置specFilter,请使用`configure`中的specFilter选项
已开始
F

失败:
1)量角器演示应用程序应具有标题
  信息:
    预期[对象承诺]等于“超级计算器”。
  堆:
    错误:预期[对象承诺]等于“超级计算器”。
        在 
        在UserContext上。(/home/srubio/Escritorio/Protractor/test-spec.js:5:32)
        在 

1个规格,1个故障
在0.009秒内完成
/home/srubio/n/lib/node_modules/protractor/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:3190
        抛出参数[0];
        ^

错误:等待量角器与页面同步时出错:“ angularJS可测试性和角度可测试性均未定义。这可能是因为这是一个非角度页面,或者是因为您的测试涉及客户端导航,这可能会干扰量角器的引导程序。有关详细信息,请参见http://git.io/v4gXM“
    在ProtractorBrowser中。(/home/srubio/n/lib/node_modules/protractor/built/browser.js:354:27)
    在Generator.next()
    完成时(/home/srubio/n/lib/node_modules/protractor/built/browser.js:4:58)
    在processTicksAndRejections(内部/进程/next_tick.js:81:5)

Dub*_*Dev 5

更新此答案

量角器版本6.0使用硒版本4,这是第一个删除对控制流的支持的硒版本。控制流使量角器可以执行如下代码

browser.get('http://google.com');
expect(browser.getTitle()).toEqual('Super Calculator');
Run Code Online (Sandbox Code Playgroud)

以同步的方式。

到目前为止,一直使用控制流来以用户友好的方式处理webdriverJS承诺的异步性质。一旦支持es8异步/等待样式的承诺处理,便决定弃用控制流并建议用户继续使用异步/等待。


原始答案

6.0是Protractor 的最新版本,我相信它是3天前发布的(大约22 / March / 19),并且它不再支持以前默认启用的控制流。显然,教程文档尚未更新以反映此问题,我相信这就是为什么您看到此问题的原因。

展望未来,您将需要使用async / await语法(在我看来,它实际上更具可读性和易用性)

尝试以下代码:

configuration.js

exports.config = {
  seleniumAddress: 'http://localhost:4444/wd/hub',
  specs: ['test-spec.js']
};
Run Code Online (Sandbox Code Playgroud)

测试规范

describe('Protractor Demo App', function() {
    it('should have a title', async function() {
        await browser.get('http://juliemr.github.io/protractor-demo/');
        expect(await browser.getTitle()).toEqual('Super Calculator');
    });
});
Run Code Online (Sandbox Code Playgroud)

更新: 如果您尝试添加SELENIUM_PROMISE_MANAGER: true,到您configuration.js的文档中,则可能会使您继续编写演示。