簡體   English   中英

使用量角器和遠程api進行AngularJS e2e測試

[英]AngularJS e2e Testing with Protractor and remote api

我想測試嚴重依賴於API的Angular應用程序。 該API正在與phpunit分開進行測試,我們正在創建固定裝置,因此理想情況下,我希望不必在Angular中創建另一組模擬固定裝置。 我現在僅在Chrome驅動程序中使用量角器。

首先,我必須通過不是Angular應用程序的頁面登錄。

然后,我轉到一個頁面,該頁面顯示帶有ng-if='loadingCards'的加載器,並隱藏帶有ng-if='!loadingCards' ,然后在API檢索卡的調用完成時, loadingCards的值翻轉。

以下是測試規格的開始,它可以幫助您完成非角度登錄,然后轉到卡列表頁面。 我要做的就是看cards $ scope變量的內容,以查看API確實返回了一些東西,但是我總是得到一個空數組。

describe('User cards page', function() {
  var driver;
  var ptor;

  beforeEach(function() {
    ptor = protractor.getInstance();
    ptor.ignoreSynchronization = true;
    browser.ignoreSynchronization = true;
    driver = ptor.driver;
  });

  it('should login', function() {
    driver.get('http://local.local.com/login');
    driver.findElement(protractor.By.name('_username')).sendKeys('admin');
    driver.findElement(protractor.By.name('_password')).sendKeys('admin');
    driver.findElement(protractor.By.css('input[type="submit"]')).click();
  });

  it('should list cards', function() {
    browser.get('http://local.local.com/cms/cards');

    var ucards = element.all(by.repeater('card in cards')).then(function(cards) {
        console.log(cards);
    });
    //expect(ucards.count()).toEqual(3);
  });
});

可能在進行登錄的it()后面跟隨進行卡計數檢查的it()。 我建議將登錄部分移至beforeEach。

如果這不起作用,也許ptor.sleep(300)可能會有所幫助。 將其放在頁面的browser.get()下方。 api可能沒有返回值。

我認為您正在混淆兩件事。 您可以寫:

element.all(by.repeater('card in cards')).then(function(cards) {
    console.log(cards);
});

要么:

var ucards = element.all(by.repeater('card in cards'));
ucards.then(function(cards) {
    console.log(cards);
});

但是你們兩者都在做。

你有什么錯誤嗎? 您可以檢查當前的網址嗎?

expect(browser.getCurrentUrl()).toEqual('http://local.local.com/cms/cards');

問候!

Walter通過使用sleep命令幫助我延長了chromedriver iwndow的打開時間,從而幫助我進行了調試,因此我可以看到所使用的URL不正確。 再創建一個測試。 關閉這個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM