2013-08-27 17 views
12

ローカルサーバーに対してe2eテストを実行し、結果のURL(ナビゲーションボタンをクリックした後)が正しい結果であることをテストしようとしています。ただし、結果のURLは常にfalseです。分度器がcurrenturlを期待していません

私のコードを以下に示します。

HTML:

//http://localhost/#/current_Page 
<html> 
    <head><title></title></head> 
    <body> 
    //should change the current url to 
    //http://localhost/#/new_page 
    <button class="button" ng-click="change_page()">Change Page</button> 
</html> 

テストコード:

var protractor = require('protractor'); 
require('protractor/jasminewd'); 

describe('Tests', function() {  
    var ptor; 

    describe('Test 1', function() { 
     var ptor = protractor.getInstance(); 
     ptor.get('#/current_page'); 
     it('change page and current url', function() { 
      ptor.findElement(protractor.By.className('.button').click().then(function() { 
       expect(ptor.currentUrl()).toContain('#/new_page'); 
      }); 
     }); 
    }, 30000); 
}); 

問題]ボタンをクリックした後、現在のURLが#/ current_urlのままとしないで予想される結果#/ new_pageに変更してください。

誰かが間違っている場所を知っていますか?

答えて

10

は、この質問に対する答えを検索した後、私は現在のURLが失敗しない自分

それを考え出した、私は角に戻るには約束を待っていませんでした。私が間違っていたところ、以下のammendedコードが表示さ

var protractor = require('protractor'); 
require('protractor/jasminewd'); 

describe('Tests', function() {  
var ptor; 

describe('Test 1', function() { 
    var ptor = protractor.getInstance(); 
    ptor.get('#/current_page'); 
     it('change page and current url', function() { 
      ptor.findElement(protractor.By.className('.button').click().then(function() { 
       ptor.waitForAngular(); 
       expect(ptor.currentUrl()).toContain('#/new_page'); 
      }); 
     }); 
    }, 30000); 
}); 

これは、新しいページへのルートに角度を待ち、任意のバインディングを更新してから、私はそれがあることを期待するものを今期待される結果を確認するために進み、 。

予期しないgetCurrentUrl()の結果に関するすべての問題を解決するわけではありません。 driver.findElement()を使用している場合はJulieMRの回答を参照する必要がありますthis question

私はこれが誰かがこの問題に取り組むのを助けることを望みます。

+6

urlChangedである

browser.get("#/current_page"); it("change page and current url", function() { element(by.css(".button")).click(); browser.wait(urlChanged("#/new_page")), 5000); }); 

:他に、browserelement表記法を使用し現在のバージョンでは 'ptor.getCurre ntUrl() 'それ以外は問題ありません。 –

2

投光器1.5.0 protractor.getInstance();はもう使用できませんので、代わりにbrowserを使用する必要があります。

var protractor = require('protractor'); 
require('protractor/jasminewd'); 

describe('Tests', function() {  

describe('Test 1', function() { 
    browser.get('#/current_page'); 
     it('change page and current url', function() { 
      ptor.findElement(protractor.By.className('.button').click().then(function() { 
       browser.waitForAngular(); 
       expect(browser.getCurrentUrl()).toContain('#/new_page'); 
      }); 
     }); 
    }, 30000); 
}); 
0

あなたはまた、所望の1等しいことに、現在のURLに対してwaitからcustom expected conditionを書き込むことができます。

var urlChanged = function(url) { 
    return function() { 
    return browser.getCurrentUrl().then(function(actualUrl) { 
     return actualUrl.indexOf(url) >= 0; 
    }); 
    }; 
}; 

あるいは、分度器> = 4.0.0溶液とurlContains予想条件:で

element(by.css(".button")).click(); 

var EC = protractor.ExpectedConditions; 
browser.wait(EC.urlContains("#/new_page"), 5000); 
関連する問題