当前位置: 首页 > 知识库问答 >
问题:

量角器仅在忽略同步设置为 false 时超时

岳浩
2023-03-14

我不知道为什么量角器在到达代码时超时,忽略同步设置为 false;

this.countSubscribers = function () {
    this.subscriberCount().then(function (count) {
    totalSubscribers = count;
  });
};

该方法工作正常,并且当忽略同步=true时,总订阅者变量获得正确的值;

下面的代码是我的规范页面示例:

describe("subscriber page test", function () {
    "use strict";
    var selectedCount = 10;
    var subscriberCount;
  
    describe("This test script selects no. of subscribers to be displayed on subscriber page", function () {

        /**
         * Step-1#Select number of items to be displayed
         * Step-2#Get the count of subscribers displayed
         * Step-3#check whether the number of subscribers displayed is equal to 10
         */
        it("should select the no. of items to displayed and get the count", function () {
            browser.ignoreSynchronization = false;
            subscriber_page.selectItems(selectedCount);
            subscriber_page.countSubscribers();
        });

        it("should check whether the selected no. of subscribers are displayed", function () {
            expect(subscriber_page.getSubscribers()).toBe(10);
        });
    });
});

下面的代码是我页面对象的示例:

var SubscriberPage = function () {
  "use strict";
  this.subscriberCount = function() { return element...}; 
  this.selectOption = function(count) {return element...};
  var totalSubscribers;
  /**
   * This method selects items in list box
   */
  this.selectItems = function (count) {
    this.selectOption(count).click(); //selects the items from list box
  };

  /**
   * This method sets the number of subscribers listed
   */
  this.countSubscribers = function () {
      this.subscriberCount().count().then(function (count) {
      totalSubscribers = count;
    });
  };

  /**
   * This method returns the subscriber count
   */
  this.getSubscribers = function () {
    return totalSubscribers;//returns the count of subscribers.
  };
};
module.exports = new SubscriberPage();

失败:等待量角器与页面同步5秒钟后超时。请在等待带有定位器的元素时查看https://github . com/angular/量角器/blob/master/docs/FAQ . MD-Locator:By(CSS选择器,...)

到目前为止,我发现:如果我注释掉规范页面count tSubscriber方法中的以下行,而不是工作正常:

subscriber_page.selectItems(selectedCount);

或者如果我在执行 countSubscribers 方法之前暂时将忽略同步变量翻转为 true,它可以正常工作。

有人能解释一下当browser.ignoreSynchronization设置为false时量角器此时在做什么,最佳解决方案是什么?

共有1个答案

巫马嘉祯
2023-03-14

在你的函数之前保留一个“this”的引用。然后你可以随时调用它。同样,如果您使用element.all(...)您将能够使用本机。count()将为您解析promise。

//对此的引用

var self = this;

element.all with .count()

< code > this . subscriber count = function(){ return element . all(...).count()};

//此方法返回列出的订阅者数

this.countSubscribers = function () { return self.subscriberCount(); });

 类似资料:
  • 问题内容: 我正在测试AngularJS应用程序,并且对量角器非常新。每次我打开浏览器时,它都会打开,然后等待超时,然后在cmd上引发以下错误。 我尝试增加超时限制,但始终会收到此错误。我也尝试过使用所有这些: 该页面正确加载,并且如果我使用Eclipse和Selenium与按钮对象进行交互,则可以正常工作。 只有量角器出现同步问题。请帮忙。 问题答案: 量角器超时的可能原因: 您的网页未以预期的

  • 问题内容: 我正在使用小型AngularJS应用测试量角器。 这是测试: 控制器: 草稿服务: 使用量角器运行此测试会导致以下错误: 但是,如果在控制器中更改此行: 对此: 测试失败,但未达到预期目的,但更重要的是:它不会超时。 启用query()时,在浏览器中手动运行应用程序以及查看Protractor打开的浏览器窗口时,转发器均会正确显示API返回的数据。 当服务与API通信时,为什么Prot

  • 我试图在量角器测试用例中设置一个cookie。我们使用量角器3.3.0,Angular 1.5.x和Node.js 6.9.1 这是规格: 编辑: 我做了一些进一步的实验。请注意,我已经更改了域,并且在成功读取/写入cookie之前没有。 这是我得到的输出: 编辑4: 越来越近了!将域设置为(注意开头的点(.))似乎有效。会做进一步调查并报告。与此同时,如果有人能告诉我为什么这个点是重要的,以及为

  • 我试图遵循量角器官方网站上的量角器教程,但我甚至无法完成步骤0。 我在用量角器 之后,我一直在遵循教程的第0步。我有配置。js文件和test-spec.js文件如下: 配置js公司 测试规范js 当我运行protector

  • 问题内容: 我安装了OSX ,并随同安装了: 在将其设置为1.6时显示1.6,而在将其设置为1.7时显示1.7: …但是Maven忽略了我的设置: 我发现了这个问题],这个家伙只需要在内部对其进行硬编码,但是我不希望自己进行硬编码(因此!),而且我也没有或。 它使用的版本似乎来自输出中的第一个版本,因此在短期内,通过调整1.7的文件),我能够再次获得1.6 ,但这仅意味着我获得了1.6而不是1.7

  • 我安装了带有的OSX,并且刚刚安装了以及: 正在执行其任务,始终工作,当我将其设置为1.6时显示1.6,当我将其设置为1.7时显示1.7: ...但maven忽略了我的设置: 我发现了这样一个问题,那家伙只需要在中硬编码他的,但我不希望我的!,而且我没有,也没有。 它所使用的版本似乎是从输出的第一个版本开始的,所以在短期内,通过调整1.7的文件(从这篇so文章),我可以重新获得1.6,但这仅仅意味

  • 我正在使用antlr4语法存储库中的JSON语法来解析JSON文件。它工作得很好,并使用通常的规则忽略空格: