【问题标题】:Appium with MochaJS "Not JSON response" when trying to run a test for iOS尝试运行 iOS 测试时,带有 MochaJS 的 Appium“不是 JSON 响应”
【发布时间】:2017-05-10 15:07:14
【问题描述】:

我尝试了http://appium.io/slate/en/1.5.3/?javascript#ios 中列出的故障排除步骤,但没有成功。

我运行我的测试:

$ mocha sample.js

这成功地在设备上安装了应用程序并打开它,但每次都在第一步测试失败并出现此错误:

错误:[elementByName("Username")] 不是 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"),
	_ = require('underscore'),
	Q = require('q'),
	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() {
	this.timeout(300000);
	var allPassed = true;

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

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

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

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

elementByXPath 命令出现了完全相同的错误,该命令使用 Appium Inspector 显示的元素的确切路径。在这两种情况下,我使用的命令与在其他设置(也包括 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 响应”错误是什么意思的猜测或提示,以及可能发生这种情况的原因。提前致谢。

【问题讨论】:

    标签: ios json mocha.js appium appium-ios


    【解决方案1】:

    我定义了驱动程序两次 - 在“之前”块中将其注释掉,并使用 XPath 命令而不是 .elementByName,它起作用了。

    【讨论】:

      猜你喜欢
      • 2013-10-31
      • 2016-02-06
      • 2020-07-06
      • 2017-07-07
      • 2015-03-17
      • 1970-01-01
      • 2016-08-03
      • 2023-03-08
      • 2014-10-01
      相关资源
      最近更新 更多