代码之家  ›  专栏  ›  技术社区  ›  Emna Ayadi

为了用量角器测试,我们可以使用什么方法来等待加载角度位置?

  •  1
  • Emna Ayadi  · 技术社区  · 8 年前

    我们可以使用什么方法等待加载Angular站点,以便用量角器对其进行测试,以避免茉莉花引起的错误: A Jasmine spec timed out. Resetting the WebDriver Control Flow ? 我可以登录并转到主页,测试通过了,但在第二次测试中,我遇到了茉莉花的问题。 Here the config file and test spec

    enter image description here

    4 回复  |  直到 8 年前
        1
  •  2
  •   khollenbeck    8 年前

    我已通过将此函数添加到配置文件中来配置此问题:

        onPrepare: function() {
          return browser.getProcessedConfig().then(function(config) {
            var browserName = config.capabilities.browserName;
            browser.manage().timeouts().setScriptTimeout(60000);
          });
        });
    
        2
  •  1
  •   Tilak    8 年前

    可以使用Protractor的浏览器对象等待角度。

    加载页面后,立即添加以下内容:

    browser.waitForAngular();
    
        3
  •  1
  •   alecxe    8 年前

    此错误意味着 你的考试花了太多时间 并超过了 default Jasmine spec timeout interval 默认为30秒(看起来您已经将超时配置为60秒)。它可以在 jasmineNodeOpts Pro拖拉机配置中的对象:

    jasmineNodeOpts: {defaultTimeoutInterval: timeout_in_millis},
    

    解决方案通常是特定于用例的,它通常指示测试代码中存在错误。为了完全理解发生了什么,我们需要查看代码本身。

    在您的特定情况下,对于初学者,您应该尝试移动“忽略同步”和 browser.get() 部分进入 beforeEach 。此外,由于您正在关闭同步,因此需要 wait 对于在与元素交互之前出现在页面上的元素:

    describe("my app", function () {
        beforeEach(function () {
            browser.ignoreSynchronization = true;
            browser.get("...");
        });
    
        it("should make the login test", function () { 
            // ...
            var EC = protractor.ExpectedConditions;
            var username = element(by.model("credentials.username"));
            browser.wait(EC.presenceOf(username), 10000);
    
            username.sendKeys("RET02");
            // ...
        });
    });
    

    而且,我不确定您是否真的需要关闭同步,因为这是您正在使用的AngularJS页面。

        4
  •  1
  •   flaviomeira10    8 年前

    你能等一个网址吗? 假设当您单击登录按钮时,您的页面被重定向到另一个url。因此,您可以等待预期的url。例子:

    browser.driver.wait(function() {
            return browser.driver.getCurrentUrl().then(function(url) {
                // Dashboard is the loaded url after login (in this example)
                return /Dashboard/.test(url);
            });
        }, 60000);
    

    此代码等待页面 browser.baseUrl/Dashboard 加载,持续60秒