Javascript 量角器函数未运行(我已查看了配置、日志等)

Javascript 量角器函数未运行(我已查看了配置、日志等),javascript,angularjs,protractor,angularjs-e2e,e2e-testing,Javascript,Angularjs,Protractor,Angularjs E2e,E2e Testing,我会尽可能地描述这个问题-如果我遗漏了细节,请告诉我-我仍在学习量角器 我正在为一个网站编写我的第一个量角器测试,它的内容非常简单 teacher.js describe("teacher list", function () { beforeEach(function () { browser.get('http://127.0.0.1:9000/teachers'); }); it("has teacher", function () { initiateDebu

我会尽可能地描述这个问题-如果我遗漏了细节,请告诉我-我仍在学习量角器

我正在为一个网站编写我的第一个量角器测试,它的内容非常简单

teacher.js

describe("teacher list", function () {
  beforeEach(function () {
    browser.get('http://127.0.0.1:9000/teachers');
  });
  it("has teacher", function () {
    initiateDebug();
    var teachers = element.all(by.repeater("teacher in items track by $index"));
    initiateDebug();
    expect(teachers.count()).toBe(20);
    initiateDebug();
  })
});
…其中,
initialedebug()
是在
量角器配置js
中的
onPrepare
函数中定义的函数,如下所示:

initialedebug()

我之所以包含此内容,是因为调用browser.pause()会导致以下错误:

Port 5858 is already in use. Please specify another port to debug.
[launcher] Process exited with error code 1
我复制了一个成员在这个问题的线程中提出的临时修复:

回到问题上来

问题1

如果我运行这段代码,页面就挂在那里,没有加载任何内容。Google提出了这个(),我直接使用了
browser.driver.get()
,这似乎是一个可行的解决方案

然而,我的第一个问题是-这是一个无法找到角的情况吗?因为我清楚地记得,一周前我运行量角器时,如果它找不到角度,它会抛出以下错误:

UnknownError: javascript error: angular is not defined
但是,我的控制台的错误是:

1) teacher list has teacher
  Message:
    Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
  Stack:
    Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
        at [object Object]._onTimeout (/Users/Baggio/project/project_bugs/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:1812:23)
问题:抛出此错误的原因是页面永远无法加载,而异步调用从未运行吗?或者可能是角载荷不起作用?还是别的什么

我很确定量角器会加载,因为我在控制台中输出了量角器,它会枚举所有的对象属性

作为问题1的延伸,下一个问题我不明白

问题2

如果我尝试使用
browser.driver.get()
运行此测试,我会收到完全相同的错误消息:

1) teacher list has teacher
  Message:
    Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
  Stack:
    Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
        at [object Object]._onTimeout (/Users/Baggio/project/project_bugs/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:1812:23)
1) teacher list has teacher
  Message:
    Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
  Stack:
    Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
        at [object Object]._onTimeout (/Users/Baggio/project/project_bugs/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:1812:23)
  Message:
所以它不应该和页面加载有任何关系

我尝试的

在交互式调试模式下调用initialedebug()后,我尝试了(在第一个断点前输入完全相同的行,我得到了以下结果:

wd-debug> repl
> element.all(by.repeater("teacher in items track by $index"))
A Jasmine spec timed out. Resetting the WebDriver Control Flow.
A Jasmine spec timed out. Resetting the WebDriver Control Flow.
F
如果我读的是正确的(),输入一个量角器命令应该会产生一些结果,但是在这里,它只是在调试模式之外恢复了控制流,没有通过Jasmine规范

我将在这里介绍相关代码:

元素的html。所有行都应该从中获取

<section ng-if="staFlag" class="teacher-item yes-cursor cursor-over" ng-repeat="teacher in items track by $index">
思想3:这能有效地证明量角器找不到角度不是问题吗

其他信息

我必须在网站本地运行的同一台服务器上运行此测试,因为出于某种原因,如果此测试在不同的服务器上启动,则网站根本无法工作。所谓“无法工作”,我的意思是:页面加载正确,但所有需要通过Restangular从后端获取数据的位都不会显示

简短版问题

到底是什么阻止了量角器测试的正确运行?我想我遗漏了一些非常明显的东西-但我已经看了几个小时了,我还没有想出任何主意


我真的很想知道正确的方向,或者如果可能的话找到一个解决方案-非常感谢。

我在Android Emulator中使用appium运行量角器脚本时遇到了同样的问题。你找到解决方案了吗?@Emma,我确实找到了-控制台的消息确切地表示异步回调没有在指定的时间内触发例如,如果它是10000(这在量角器的规范文件中是可配置的),并且在您所在的页面上有一些异步调用,等待时间超过10000,它将停止运行。请查看是否有任何异步回调卡在您的页面上。@Emma对我来说,问题是我在中国,我一直在使用代理访问互联网,因为谷歌太有价值了。当我正在进行项目时,问题就来了使用代理连接时,在页面上有一些调用根本不会触发。我面临的难题是网站的某些部分需要代理,或者它们不会运行,但网站的其他部分拒绝在代理上运行。通过将代理切换到可以自动筛选哪些连接被阻止,哪些不是我的p现在的问题是,当我在间隔时间内加载网站时(angularjs网站)浏览器崩溃后就不会发生任何事情了。这种pb只发生在emulator中。在真实设备中一切正常!@Emma如果你的站点足够小,试着隔离代码中的一些部分,看看是哪个部分出错了?试着找出你的模拟器和真实设备之间的区别,看看什么可能是c导致异步回调问题?
1) teacher list has teacher
  Message:
    Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
  Stack:
    Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
        at [object Object]._onTimeout (/Users/Baggio/project/project_bugs/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:1812:23)
  Message: