2016-03-23 16 views
1

İletici öğesinin nesnesi aracılığıyla döndürülen web bağlantılarında Beklenen Koşulları kullanırken, aşağıdaki sorunu görüyorum. $ Ile de denedim, aynı şeyle sonuçlandı. Ben forumlar arandı, soran önce: "özelliği okunamıyor 'bağlama' tanımsız tipi Hatası"Uzlaştırıcı Olmayan Açıdan Olmayan Sitede Beklenen Koşulların Kullanılması "Tür Hatası: Özelliği okunamıyor 'tanımsız" bağını "

ve anladı. Ben *, Düğüm 4.2.4 üzerinde

Krom V47 Protractor 3.1.1 kullanıyorum drive.findElement kullanarak selenyum elemanları ile Beklenen Koşulları kullanarak bazı bilinen sorunlar vardır. Bununla birlikte, element nesnesinin kullanımı sırasında bildirilen benzer sorunlara rastlayamamıştım.

https://github.com/angular/protractor/issues/1853

Biz Açısal sonrası giriş geçiş yapılır giriş sayfasında, bir sigara açısal uygulaması vardır. Bu yüzden, ignoreSynchronization = true ayarını yaptım ve daha sonra oturum açtıktan sonra false olarak sıfırlamak için planlanmıştım. Aşağıda örnek kod, topluluktan herhangi bir düşünce için teşekkür ederiz.

Sayfa Dosya Nesneleri Aşağıda

module.exports = { 
    login: element(by.model('credentials.username')), 
    password: element(by.model('credentials.password')), 
    user: "Email", 
    passwd: "Password", 
    goButton: $('input.btn.btn-primary'), 
    EC: protractor.ExpectedConditions, 
    go: function() { 

    browser.get("Application URL",30000); 
    browser.wait(this.EC.elementToBeClickable(this.login),30000); 
    }, 

şöyle Yığın izleme görünüyor bildirdi

var VMPage = require('./LoginPage.js'); 


    describe('App Demo', function() { 
    beforeEach(function() { 
    console.log("Before Each Started"); 
    browser.driver.manage().timeouts().implicitlyWait(30000); 
    jasmine.DEFAULT_TIMEOUT_INTERVAL = 1800000; 
    browser.ignoreSynchronization = true; 
    VMPage.go(); 
    VMPage.login(); 
    }); 

    it('Test Case', function() { 
     console.log("***Test Started***"); 

    }); 

}); 

benim Örnek Test Suite: Stack:

TypeError: Cannot read property 'bind' of undefined 
     at [object Object].ExpectedConditions.presenceOf (C:\Users\PJ\Ap 
pData\Roaming\npm\node_modules\protractor\lib\expectedConditions.js:289:33) 
     at [object Object].ExpectedConditions.visibilityOf (C:\Users\PJ\ 
AppData\Roaming\npm\node_modules\protractor\lib\expectedConditions.js:328:10) 
     at [object Object].ExpectedConditions.elementToBeClickable (C:\Users\PJ0 
0366401\AppData\Roaming\npm\node_modules\protractor\lib\expectedConditions.js:17 
8:12) 
     at Object.module.exports.go (D:\protractor_git\Demo\\Log 
inPage.js:14:24) 
     at Object.<anonymous> (D:\protractor_git\Demo\\LoginTest 
.js:9:10) 
     at C:\Users\PJ\AppData\Roaming\npm\node_modules\protractor\node_ 
modules\jasminewd2\index.js:96:23 
     at new wrappedCtr (C:\Users\PJ\AppData\Roaming\npm\node_modules\ 
protractor\node_modules\selenium-webdriver\lib\goog\base.js:2468:26) 
     at controlFlowExecute (C:\Users\PJ\AppData\Roaming\npm\node_modu 
les\protractor\node_modules\jasminewd2\index.js:82:18) 
    From: Task: Run beforeEach in control flow 
     at Object.<anonymous> (C:\Users\PJ\AppData\Roaming\npm\node_modu 
les\protractor\node_modules\jasminewd2\index.js:81:14) 
     at attemptAsync (C:\Users\PJ\AppData\Roaming\npm\node_modules\pr 
otractor\node_modules\jasmine\node_modules\jasmine-core\lib\jasmine-core\jasmine 
.js:1916:24) 
     at QueueRunner.run (C:\Users\PJ\AppData\Roaming\npm\node_modules 
\protractor\node_modules\jasmine\node_modules\jasmine-core\lib\jasmine-core\jasm 
ine.js:1871:9) 
     at QueueRunner.execute (C:\Users\PJ\AppData\Roaming\npm\node_mod 
ules\protractor\node_modules\jasmine\node_modules\jasmine-core\lib\jasmine-core\ 
jasmine.js:1859:10) 
     at Spec.Env.queueRunnerFactory (C:\Users\PJ\AppData\Roaming\npm\ 
node_modules\protractor\node_modules\jasmine\node_modules\jasmine-core\lib\jasmi 
ne-core\jasmine.js:697:35) 
     at Spec.execute (C:\Users\PJ\AppData\Roaming\npm\node_modules\pr 
otractor\node_modules\jasmine\node_modules\jasmine-core\lib\jasmine-core\jasmine 
.js:359:10) 
     at Object.fn (C:\Users\PJ\AppData\Roaming\npm\node_modules\protr 
actor\node_modules\jasmine\node_modules\jasmine-core\lib\jasmine-core\jasmine.js 
:2479:37) 
     at attemptAsync (C:\Users\PJ\AppData\Roaming\npm\node_modules\pr 
otractor\node_modules\jasmine\node_modules\jasmine-core\lib\jasmine-core\jasmine 
.js:1916:24) 
     at QueueRunner.run (C:\Users\PJ\AppData\Roaming\npm\node_modules 
\protractor\node_modules\jasmine\node_modules\jasmine-core\lib\jasmine-core\jasm 
ine.js:1871:9) 
     at QueueRunner.execute (C:\Users\PJ\AppData\Roaming\npm\node_mod 
ules\protractor\node_modules\jasmine\node_modules\jasmine-core\lib\jasmine-core\ 
jasmine.js:1859:10) 
    From asynchronous test: 
    Error 
     at Suite.<anonymous> (D:\protractor_git\Demo\\LoginTest. 
js:3:2) 
     at addSpecsToSuite (C:\Users\PJ\AppData\Roaming\npm\node_modules 
\protractor\node_modules\jasmine\node_modules\jasmine-core\lib\jasmine-core\jasm 
ine.js:833:25) 
     at Env.describe (C:\Users\PJ\AppData\Roaming\npm\node_modules\pr 
otractor\node_modules\jasmine\node_modules\jasmine-core\lib\jasmine-core\jasmine 
.js:802:7) 
     at jasmineInterface.describe (C:\Users\PJ\AppData\Roaming\npm\no 
de_modules\protractor\node_modules\jasmine\node_modules\jasmine-core\lib\jasmine 
-core\jasmine.js:3375:18) 
     at Object.<anonymous> (D:\protractor_git\Demo\\LoginTest 
.js:2:1) 

cevap

2

Sizin page object bir fonksiyonu olarak tanımlanması gerektiğini: öneri için

var Page = function() { 
    this.login = element(by.model('credentials.username')); 
    this.password = element(by.model('credentials.password')); 
    this.user = "Email"; 
    this.passwd = "Password"; 
    this.goButton = $('input.btn.btn-primary'); 

    this.EC = protractor.ExpectedConditions; 

    this.go = function() { 
     browser.get("Application URL", 30000); 
     browser.wait(this.EC.elementToBeClickable(this.login), 30000); 
    }; 
}; 

module.exports = new Page(); 
1

Teşekkür, ben ancak, biz hala tanınmayan tipleri konunun içine almak o tuhaf, o bahsettiğiniz şekilde çalışması gerektiğini kabul ediyorum.

Düğüm js ve bu yığın için biraz yeni. Modül ihracı gibi öğeleri/işlevleri tek tek açarak, herşeyi bir işleve sarmakla bahsettiğiniz birden fazla seçeneği denedim.

Son olarak, prototipleme kullanarak bana çalışacak birini buldum. Test dosyasında

var AngularPage = function() { 

    }; 
AngularPage.prototype.login  = element(by.model('credentials.username')); 
AngularPage.prototype.password = element(by.model('credentials.password')); 
AngularPage.prototype.goButton = $('input.btn.btn-primary'); 

AngularPage.prototype.user  = "username"; 
AngularPage.prototype.passwd = "password"; 
AngularPage.prototype.EC  = protractor.ExpectedConditions; 

AngularPage.prototype.go  = function(){ 
    browser.get("Application URL",30000) 
            .then(browser.wait(this.EC.elementToBeClickable(this.login),30000)); 
            expect(browser.getTitle()).toContain(‘String’); 
    }; 
AngularPage.prototype.loginMethod = function(){ 
    console.log("Login started"); 
    this.login.sendKeys(this.user); 
this.password.sendKeys(this.passwd); 
this.goButton.click(); 
    browser.wait(this.EC.elementToBeClickable(this.compute)); 
    }; 
module.exports = AngularPage; 

, bu, ben bir örnek pasajı içe ve diyoruz başardı nasıl.

var page = require('./LoginPage_Export_As_Prototype.js'); 
var LoginPage = new page(); 
LoginPage.go(); 
LoginPage.loginMethod(); 

sayesinde Prakash