为什么量角器在2个连续线上被引用时没有找到元素?

时间:2017-10-06 14:34:15

标签: javascript angular typescript protractor

如果我在spec.ts文件的it块中使用以下代码:

    element(by.css(".header-text")).getText().then(function(text) {
        console.log(text);
    });
    expect(element(by.css(".header-text")).getText()).toEqual("Project");

我将以下内容输出到我的控制台:

Project

Expected '' to equal 'Project'.
Expected :"Project"
Actual   :""

对此有一些观察。

  • 如果我删除第一行""使用console.log的代码,期望按预期工作。
  • 当我在启动机器后首先运行此代码时,它会运行前2-3次运行。这很奇怪,因为量角器每次运行都会启动一个新的浏览器(我想并且似乎在观察)并且不应该进行某种类型的缓存。
  • 在我看来,这似乎是某种类型的"当测量时,价值变化"我真的不期望编程的行为,但我是Javascript / Angular / Protractor的新手,所以也许这只是发生的事情,你必须拥有它以这种方式行事的部落知识。

这不是项目中断,我的测试按照我想要的方式进行。我想解释为什么会出现这种情况。

1 个答案:

答案 0 :(得分:1)

您已经在解决这个承诺,所以您可以同时使用它。

element(by.css(".header-text")).getText()
    .then(function(text) {
        console.log(text);
        expect(text).toEqual("Project");
    });

expect方法应该解决承诺,但如果你已经拥有它,为什么要问两次。

要检查的另一件事是您的应用程序中的任何内容都会使它看起来像Angular已经完成它的工作,但随后更改了标题 - 因为看起来您可能在填充之前获得了标题在某些情况下表明竞争状况。