2016-05-19 15 views
0

最近のテスト最初にログインし、角度のないページ(https://www.qa.dealertrack.com/default1.aspx) で何らかのアクションを実行し、角度のページに切り替えてテストを終了する必要があります。しかし、現場に入る前に、分度器はエラーNoSuchElementErrorをスロー角度のないページで分度器を使用する

   describe('Sample Test - Log In', function() { 
        var loginPage = require('../pages/LogInPage.js'); 

        /** 
        * Disable waiting for AngularJS for none Angular page 
        */ 
        beforeEach(function() { 
         isAngularSite(false); 
        }); 

        it('logging in', function() { 
         loginPage.logIn('xxx', 'xxx'); 
        }) 
       }) 

:私のテストがどのように見える

   var LogInPage = function() { 
        this.loginUrl = 'https://www.qa.dealertrack.com/default1.aspx'; 
        this.id = browser.driver.findElement(by.name('username')); 
        this.password = browser.driver.findElement(by.name('password')); 
        this.loginButton = browser.driver.findElement(by.name('login')); 

        this.logIn = function(id, password) { 
         // maximize window 
         driver.manage().window().maximize(); 
         // log in 
         driver.get('https://www.qa.dealertrack.com/default1.aspx'); 
         this.id.sendKeys(id); 
         this.password.sendKeys(password); 
         this.loginButton.click(); 
        } 
       }; 

:私は同じよう

global.driver = browser.driver; 

マイページオブジェクトが見えていconfには :そのような要素はありません:要素を見つけることができません:{'方法': '名前'、 'セレクタ': 'ユーザー名'}

しかし、私はすべての要素変数との関連行をコメントアウトするとき、唯一それが働いた

driver.get(this/loginUrl); 

を残しました。なぜ、browser.driver.getは動作しますが、browser.driver.findElementは動作しませんか?

これは私の最初の質問Stackoverflowです。みんなありがとう!

+1

チェックのようなものSHOLD

browser.driver.ignoreSynchronization=true; 

を設定する必要があり、この: https://github.com/angular/protractor/issues/51 そして、もしノンアングルアプリケーションで分度器を使用しています: browser.ignoreSynchronization = true; – Nick

答えて

0

私は、ページオブジェクト内の自分の機能の外で宣言した要素をすべて削除しようとしました。その代わりに、関数の要素をハードコードするだけです。そしてそれは働いた。

2

は、ログインする前に、だから、

browser.driver.ignoreSynchronization=true; 
login(); 
browser.driver.ignoreSynchronization=false; 
関連する問題