2016-12-26 55 views
1

我試過在http://appium.io/slate/en/1.5.3/?javascript#ios上列出的故障排除步驟,但沒有運氣。嘗試運行iOS測試時MochaJS的「非JSON響應」

我跑我的測試有:

$ mocha sample.js 

這成功安裝該應用的設備上,並打開它,但測試的第一步,此錯誤每次失敗:

錯誤: [elementByName( 「用戶名」)]不JSON響應

at exports.newError (node_modules/wd/lib/utils.js:145:13) 
    at node_modules/wd/lib/callbacks.js:59:17 
    at node_modules/wd/lib/webdriver.js:179:5 
    at Request._callback (node_modules/wd/lib/http-utils.js:88:7) 
    at Request.self.callback (node_modules/request/request.js:187:22) 
    at Request.<anonymous> (node_modules/request/request.js:1048:10) 
    at IncomingMessage.<anonymous> (node_modules/request/request.js:969:12) 
    at endReadableNT (_stream_readable.js:974:12) 
    at _combinedTickCallback (internal/process/next_tick.js:74:11) 
    at process._tickCallback (internal/process/next_tick.js:98:9) 

這是我的測試:

//example from built.io 
 
"use strict"; 
 
require("./helpers/setup"); 
 
require('colors'); 
 

 
var wd = require("wd"), 
 
\t _ = require('underscore'), 
 
\t Q = require('q'), 
 
\t serverConfigs = require('./helpers/appium-servers'); 
 

 
var serverConfig = serverConfigs.local; 
 
var driver = wd.promiseChainRemote(serverConfig); 
 
var pry = require('pryjs'); 
 

 
var _p  = require('./helpers/promise-utils'); // needed? 
 
var simulator = false 
 
var chai  = require("chai"); 
 
// var assert = require('assert'); //needed? 
 
var assert = chai.assert; 
 

 
// var config = require('./helpers/config') 
 
chai.config.includeStack = true; 
 

 

 

 
describe("Node Sample Automation Code", function() { 
 
\t this.timeout(300000); 
 
\t var allPassed = true; 
 

 
\t before(function() { 
 
\t \t var serverConfig = process.env.SAUCE ? serverConfigs.sauce : serverConfigs.local; 
 
\t \t var driver = wd.promiseChainRemote(serverConfig); 
 
\t \t require("./helpers/logging").configure(driver); 
 
\t \t var desired = _.clone(require("./helpers/caps").mycapabilities); 
 
\t \t desired.app = require("./helpers/apps").myTestApp; 
 
\t \t if (process.env.SAUCE) { 
 
\t \t \t desired.name = 'Automation Code'; 
 
\t \t \t desired.tags = ['sample']; 
 
\t \t } 
 
\t \t return driver.init(desired); 
 
\t }); 
 

 
\t after(function() { 
 
\t \t return driver 
 
\t \t .sleep(3000).quit().finally(function() { 
 
\t \t \t if (process.env.SAUCE) { 
 
\t \t \t \t return driver.sauceJobStatus(allPassed); 
 
\t \t \t } 
 
\t \t }); 
 
\t }); 
 

 
\t afterEach(function() { 
 
\t \t allPassed = allPassed && this.currentTest.state === 'passed'; 
 
\t }); 
 

 
\t it("Should Login", function() { 
 
\t \t return driver 
 
\t \t .elementByName('Username').click() 
 
\t \t //same field - this doesn't work either 
 
\t \t // .elementByXPath("//UIAApplication[1]/UIAWindow[1]/UIATextField[1]") 
 
\t }); 
 
});

我與elementByXPath命令,它使用的確切路徑,以由所述Appium檢查揭示了元件完全相同的錯誤。在這兩種情況下,我使用的命令與在其他設置(iOS和mocha)中工作的其他測試的示例完全相同,這讓我相信這不是我對命令的使用,但是設備和Appium之間的通信存在根本性錯誤。

這裏的Appium日誌的摘錄,似乎適用於錯誤:

2016-12-26 03:47:43:217 - [MJSONWP] Responding to client with driver.getStatus() result: {"build":{"version":"1.5.3"... 
2016-12-26 03:47:43:233 - [HTTP] --> POST /wd/hub/session/element {"using":"name","value":"Username"} 
2016-12-26 03:47:43:237 - [debug] [HTTP] No route found. Setting content type to 'text/plain' 
2016-12-26 03:47:43:239 - [HTTP] <-- POST /wd/hub/session/element 404 5 ms - 65 
2016-12-26 03:47:43:242 - [MJSONWP] Responding to client with driver.getStatus() result: {"build":{"version":"1.5.3"... 

我想感謝所有幫助任何人都可以提供,甚至猜測或暗示至於什麼錯誤「不是JSON響應」意味着,爲什麼會發生。提前致謝。

回答

1

我在定義驅動程序兩次 - 在「before」塊中註釋它之後,使用XPath命令而不是.elementByName,它工作正常。

相關問題