2017-05-15 3 views
0

zugreifen Ich habe unten genannten Haken verwendet, um die wd spezifische API verwenden, aber ich bin nicht in der Lage, es zu tun. Angenommen, ich möchte die App schließen. Wie kann ich dafür gehen? Auch ist es die wdBrowser gelesen hat, aber es nicht den Druck den Zusammenhangs beim Aufruf Current()Wie wd spezifische mobile apis mit Winkelmesser

'use strict'; 
var log4js = require('log4js'); 
var fs = require('fs'); 

exports.config = { 

    capabilities: { 
     browserName: '', 
     platformName: 'Android', 
     platformVersion: '6.0', 
     deviceName: 'ZX1D62CVWH', 
     autoWebview: true, 

     // change this path to the absolute path of the app 
     app: '/Users/abhishek/abhishek-test-volunteeringMobileApp/android-debug.apk' 
    }, 


    //restartBrowserBetweenTests: true, 
    // Framework to use. Jasmine is recommended. 
    framework: 'jasmine2', 

    // Spec patterns are relative to the current working directory when 
    // protractor is called. 


    specs: ['Specs/LoginSpec.js'], 

    seleniumAddress: 'http://localhost:4723/wd/hub', 
    // 'seleniumAddress': 'http://hub-cloud.browserstack.com/wd/hub', 

    // Override the timeout for webdriver to 20 seconds. 
    allScriptsTimeout: 90000, 
    getPageTimeout: 90000, 


    // Options to be passed to Jasmine. 
    jasmineNodeOpts: { 
     defaultTimeoutInterval: 90000, 
     showColors: true 
      // allScriptsTimeout: 50000 
    }, 




    onPrepare: function() { 

     // implicit and page load timeouts 
     browser.manage().timeouts().pageLoadTimeout(40000); 
     browser.manage().timeouts().implicitlyWait(25000); 

     // for non-angular page 
     // browser.ignoreSynchronization = true; 
     var Jasmine2HtmlReporter = require('protractor-jasmine2-html-reporter'); 
     jasmine.getEnv().addReporter(
      new Jasmine2HtmlReporter({ 
       captureOnlyFailedSpecs: true, 
       savePath: './Web_Automation_Summary', 
       takeScreenShotsOnlyForFailedSpecs: true, 
       cleanDestination: true, 
       fileName: 'Automation_Report' 
      }) 
     ); 

     var wd = require('wd'), 
      protractor = require('protractor'), 
      wdBridge = require('wd-bridge')(protractor, wd); 
     wdBridge.initFromProtractor(exports.config); 
    } 

} 

Spec.js

describe('Login page testcases', function() { 


    it('should print context of the device', function() { 

     wdBrowser.currentContext().then(function(value) { 
      console.log(+value) 
     }) 
     browser.quit(); 
    }); 
+0

Can Sie fügen Ihre Spezifikationsdatei hier ein? – wswebcreation

+0

@wswebcreation Aktualisiert –

+0

Der gesamte Code sieht gut aus, aber: 1. Ist die App wirklich geöffnet, wenn Sie den Kontext protokollieren? 2. Was passiert, wenn Sie den 'browser.quit();' entfernen. Soweit ich weiß, müssen Sie nie einen 'browser.quit();' ausführen, weil der Winkelmesser das tut, wenn alle Stepfiles ausgeführt werden. – wswebcreation

Antwort

0

Weitere Informationen über den WD-API here gefunden werden können. Sie müssen nur das globale wdBrowser -Objekt anstelle des globalen Winkelmessers browser -Objekt verwenden, um auf die API zuzugreifen.

Überprüfen Sie auch, ob Sie den Kontext (NATIVE/WEBVIEW) ändern müssen, bevor Sie eine Methode in der App ausführen.

Hoffe, dass es

+0

Danke für die Antwort. Das Problem, mit dem ich konfrontiert bin, ist, dass das globale Objekt wdBrowser seine Methoden nicht aufrufen kann. . Wie wdBrowser.currentContext() dann (function (value) { console.log (Wert) }) ....... Dieser dem Kontextwert nicht –

+0

Funktionen drucken: { browser: '', Platform: 'Android', platformVersion: '6.0', device: 'ZX1D62CVWH', autoWebview: true, // diesen Weg App auf den absoluten Pfad der App ändern: ‚/ Users/abhishek/abhishek- test-volunteeringMobileApp/android-debug.apk ' }, –

+0

Haben Sie den Code mit 'wdBridge.initFromProtractor (exports.config);' im onPrepare? Wenn ja, können Sie die Konfiguration und Ihre Spezifikationsdatei hier einfügen? – wswebcreation

0

Es gibt einige Dinge, hilft ich sehen kann:

  • Putting browser.quit(), wo Sie es haben wird beendet, bevor das Versprechen Current gelöst hat - es sowieso nicht gebraucht wird.
  • console.log(+value) ist syntaktisch falsch: sollte console.log(value)
  • Sie done in der Funktion Signatur verwenden können, um Winkelmesser warten zu lassen, bis diese Funktion So

versuchen so etwas wie dies heißt:

describe('Login page testcases', function() { 
    it('should print context of the device', function(done) { 
     wdBrowser.currentContext().then(function(value) { 
      console.log(value); 
      done();   
     }); 
    }); 
});  
Verwandte Themen