2013-04-09 32 views
8

Qunit test senaryolarını PhantomJS ile çalıştırmaya çalışıyorum. PhantomJS DOM'ın navigator.geolocation işlevine erişmeyi denediğimde testlerimden biri takılıyor. Aynı test tarayıcıda düzgün çalışıyor, sadece phantomJS ile konsolda asılı.phantomJS coğrafi konumları destekliyor mu?

doe phantomJS desteği coğrafi konumlar? herhangi bir öneri? aşağıdaki

sonları koşulu

if(navigator.geolocation) { 
      window.navigator.geolocation.watchPosition(updateLocation, null, { frequency: 3000 }); 
     } 

cevap

10

sayılı

Basitçe features.js çek örneği ise.

>phantomjs.exe features.js 
Detected features (using Modernizr 2.0.6): 

Supported: 
    touch 
    generatedcontent 
    fontface 
    flexbox 
    canvas 
    canvastext 
    postmessage 
    websqldatabase 
    hashchange 
    history 
    draganddrop 
    websockets 
    rgba 
    hsla 
    multiplebgs 
    backgroundsize 
    borderimage 
    borderradius 
    boxshadow 
    textshadow 
    opacity 
    cssanimations 
    csscolumns 
    cssgradients 
    cssreflections 
    csstransforms 
    csstransitions 
    localstorage 
    sessionstorage 
    webworkers 
    applicationcache 
    svg 
    inlinesvg 
    smil 
    svgclippaths 

Not supported: 
    csstransforms3d 
    webgl 
    geolocation 
    indexeddb 
    video 
    audio 
+0

Çok teşekkür ederim. Gerçekten yardımcı oldu. Coğrafi konumun üzerinden atlamak için yönetildi –

4

Sen testler veya başlatma üzerinde DOM içine gerekli işlevleri enjekte ederek başka şeyler yapmak için "coğrafi konum-sahte-destek" ekleyebilirsiniz. Aşağıdaki örnek, navigator.geolocation.getCurrentPosition öğesini işaretler, böylece tarayıcıdaki web sitesi bu API uç noktası olarak adlandırıldığında PhantomJS her zaman yapılandırılan konumu döndürür.

webpage.onInitialized = function() { 
    webpage.injectJs('geolocation.js') 
}; 

geolocation.js:

window.navigator.geolocation = { 
    getCurrentPosition: function (success, failure) { 
     success({ 
      coords: { 
       // Will always return Germany, Rostock 
       latitude: 54.0834, 
       longitude: 12.1004 

      }, timestamp: Date.now() 
     }); 
    } 
};