2014-09-29 12 views
20

Prosesçi ile test yapıyorum ancak JS 'window' nesnesine erişmek imkansız görünüyor. Hatta deneyinErişim penceresi nesnesi/tarayıcı Kapsam göstericiden etki alanı

var a = window.location; 

gibi bir şey içeren ve olurdu benim html dosyasındaki bir etiketi ekleyerek çalıştı ... (a) 'beklemek ama hep tanımsız referanslar olsun, işe gelemedi

Tarayıcı kapsamındaki değişkenlere erişmek için nasıl işlem yapmalıyım?

cevap

21

Eğer Açı ölçer bir son sürümünü kullanıyorsunuz varsayarsak, en Açıölçer çalışır çünkü çalışmaz doğrudan İletki gelen erişim Tarayıcı yan JS kodu çalışılıyor> = 1.1.0, umarım> = 1.3.1

diyelim NodeJS ve her Tarayıcı yan kodu Selenium JsonWireProtocol aracılığıyla yürütülür. daha ayrıntılı olmadan

, bir çalışma örneği:

browser.get('https://angularjs.org/'); 
bugün itibariyle '1.3.0-rc.3'

browser.executeScript('return window.angular.version.full;'); 

olarak çözümlenir,

Tek astar söz Sen verilen bekliyoruz açıklamada Açıölçer en doğrudan kullanabilirsiniz beklediğiniz vaatleri çözer:

Uzun Örneğin, bir dize yerine expect olmadan bir işlevi ileterek sizin için söz vermektesiniz. yani daha fazla kontrol ve sonuçla süslü bir şey yapmak için. . Daha sonra (function (myvar) {...}); ('geri dönüş myvar');

browser.driver.executeScript(function() { 
    return window.angular.version.full; 
}).then(function(result) { 
    console.log('NodeJS-side console log result: ' + result); 
    //=> NodeJS-side console log result: 1.3.0-rc.3 
}); 
+1

Aslında kullanıyorum iletki sürümü ile, ben 'browser.executeScript kullanmak zorunda' ama mükemmel çalıştı , Teşekkürler! – hilnius

+2

Bu yöntemi kullanarak sadece pencere nesnesini döndürürsem, "Maksimum çağrı yığını boyutu aşıldı" alıyorum :( – chrismarx

+1

Muhtemelen kötü bir fikir muhtemelen @chrismarx, gerçekten ihtiyacınız olan şeyleri döndürün;) –