我正在使用 Appium 和 WebDriverIO 运行 Android 应用程序测试用例。我遇到以下错误:
Execution of 1 workers started at 2024-02-26T10:08:46.718Z
2024-02-26T10:08:47.749Z ERROR @wdio/appium-service: info
2024-02-26T10:08:47.750Z ERROR @wdio/cli:utils: A service failed in the 'onPrepare' hook
Error: info
at Socket.<anonymous> (file:///home/runner/work/e2e-tests/node_modules/@wdio/appium-service/build/launcher.js:172:28)
at Object.onceWrapper (node:events:633:26)
at Socket.emit (node:events:518:28)
at Socket.emit (node:domain:488:12)
at addChunk (node:internal/streams/readable:559:12)
at readableAddChunkPushByteMode (node:internal/streams/readable:510:3)
at Readable.push (node:internal/streams/readable:390:5)
at Pipe.onStreamRead (node:internal/stream_base_commons:190:23)
Continue...
"@wdio/allure-reporter": "^8.32.2",
"@wdio/appium-service": "^8.32.3",
"@wdio/cli": "^8.32.3",
"@wdio/local-runner": "^8.32.3",
"@wdio/mocha-framework": "^8.32.3",
"@wdio/spec-reporter": "^8.32.2",
"appium": "^2.5.1",
"appium-uiautomator2-driver": "^3.0.1"
配置文件
const path = require('path');
exports.config = {
runner: 'local',
specs: [],
exclude: [],
maxInstances: 10,
capabilities: {
phone1: {
port: 4442,
path: '/',
capabilities: {
platformName: 'android',
'appium:automationName': 'uiautomator2',
'appium:deviceName': 'Pixel 3a',
'appium:platformVersion': '14',
'appium:udid': 'emulator-5554',
'appium:adbExecTimeout': 50000,
'appium:noReset': false,
'appium:dontStopAppOnReset': true,
'appium:fullReset': false,
'appium:systemPort': 8200,
'appium:appWaitDuration': '2000000',
'appium:app': path.join(process.cwd(), '../app/build/outputs/apk/debug.apk'),
'appium:autoGrantPermissions': true,
'appium:uiautomator2ToastWaitTimeout': 7000,
'appium:waitforTimeout': 30000,
'appium:newCommandTimeout': 600
}
}
},
logLevel: 'error',
bail: 0,
baseUrl: '',
waitforTimeout: 100000,
connectionRetryTimeout: 120000,
connectionRetryCount: 3,
services: [
[
'appium',
{
command: 'appium',
args: {
port: 4442
}
}
]
],
framework: 'mocha',
watch: true,
reporters: [
[
'allure',
{
outputDir: 'allure-results',
disableWebdriverStepsReporting: true,
disableWebdriverScreenshotsReporting: false
}
]
],
mochaOpts: {
ui: 'bdd',
timeout: 600000
},
afterTest: async function (test, context, { error, result, duration, passed, retries }) {
if (error !== undefined) {
await phone1.takeScreenshot();
}
}
};
收到此错误后,测试用例运行完全正常。我不明白为什么它显示为错误而不只是信息。
Error: info at Socket.<anonymous>
有人可以帮我解决这个错误吗?
更多信息: 这仅在安装项目后第一次发生,当我再次尝试时,效果很好。
您遇到的错误似乎来自
onPrepare
挂钩期间的 Appium 服务。该钩子在所有工作程序启动之前执行一次,通常用于设置和配置测试环境。
在您的配置中,您正在使用带有
appium
包的 Appium 服务,并且 Appium 服务的初始化过程中似乎可能存在问题。您可以采取以下一些步骤来排查和解决问题:
检查Appium日志:
logLevel: 'verbose', // or 'debug'
更新依赖项:
npm update
重新安装Appium:
npm uninstall -g appium
npm install -g appium
检查配置:
重试:
重建项目:
检查网络和权限:
Appium医生:
appium-doctor
社区支持:
更改配置后请记住重新启动 Appium 服务器和测试执行环境。
如果问题仍然存在,提供 Appium 日志中的更多详细信息或任何其他错误消息将有助于进一步分析。