Appium+python自动化(三十五)- 命令启动appium之 appium服务命令行参数(超详解)
简介
前边介绍的都是通过按钮点击启动按钮来启动appium服务,有的小伙伴或者童鞋们乍一听可能不信,或者会问如何通过命令行启动appium服务呢?且听一一道来。
一睹为快
其实相当的简单,不看不知道,一看吓一跳,直接在docs命令窗口输入命令:appium 就可以运行起appium

这回小伙伴和童鞋们相信了吧,都启动来了。
第一行:欢迎使用Appium,版本 v1.8.1
第二行:Appium启动成功,启动ip为默认的 0.0.0.0,端口为默认的 4723;默认即表示“不指定”的情况下;
默认端口4723。此时小伙伴或者童鞋们又会问,那么如何修改端口了,不要急,听宏哥慢慢地道来。
修改appium启动端口
appium启动默认端口4723,如果要指定端口,通过以下命令:appium -p 端口号,例图修改端口4725

2个端口

指定端口的设备,输入命令:appium -p 端口1 -bp 端口2 设备编号

appium -a 127.0.0.1 -p 4723 --session-override
-a 是指定监听的ip(也可写成 --address),后面“127.0.0.1”可以改为你需要的ip地址;
-p 是指定监听的端口(也可写成 --port),也可以修改为你需要的端口;
--session-override 是指覆盖之前的session;
appium -a 127.0.0.1 -p 4727 -bp 4728 --chromedriver-port 9519 -U xiaomi --session-override
-bp 是连接Android设备bootstrap的端口号,默认是4724(也可写成--bootstrap-port)
--chromedriver-port 是chromedriver运行需要指定的端口号,默认是9515
-U 是连接的设备名称,如"adb devices"获取的设备标识(也可写成--udid)
服务器标志
所有的标志都是可选的,但是有一些标志需要组合在一起才能生效。
| 标志 | 默认值 | 描述 | 例子 |
|---|---|---|---|
--shell | null | 进入 REPL 模式 | |
--localizable-strings-dir | en.lproj | IOS only: 定位 .strings所在目录的相对路径 | --localizable-strings-dir en.lproj |
--app | null | iOS: 基于模拟器编译的 app 的绝对路径或者设备目标的 bundle_id; Android: apk 文件的绝对路径--app /abs/path/to/my.app | |
--ipa | null | (IOS-only) .ipa 文件的绝对路径 | --ipa /abs/path/to/my.ipa |
-U, --udid | null | 连接物理设备的唯一设备标识符 | --udid 1adsf-sdfas-asdf-123sdf |
-a, --address | 0.0.0.0 | 监听的 ip 地址 | --address 0.0.0.0 |
-p, --port | 4723 | 监听的端口 | --port 4723 |
-ca, --callback-address | null | 回调IP地址 (默认: 相同的IP地址) | --callback-address 127.0.0.1 |
-cp, --callback-port | null | 回调端口号 (默认: 相同的端口号) | --callback-port 4723 |
-bp, --bootstrap-port | 4724 | (Android-only) 连接设备的端口号 | --bootstrap-port 4724 |
-k, --keep-artifacts | false | 弃用,无效。trace信息现在保留tmp目录下,每次运行前会清除该目录中的信息。 也可以参考 –trace-dir 。 | |
-r, --backend-retries | 3 | (iOS-only) 遇到 crash 或者 超时,Instrument 重新启动的次数。 | --backend-retries 3 |
--session-override | false | 允许 session 被覆盖 (冲突的话) | |
--full-reset | false | (iOS) 删除整个模拟器目录。 (Android) 通过卸载应用(而不是清除数据)重置应用状态。在 Android 上,session 完成后也会删除应用。 | |
--no-reset | false | session 之间不重置应用状态 (iOS: 不删除应用的 plist 文件; Android: 在创建一个新的 session 前不删除应用。) | |
-l, --pre-launch | false | 在第一个 session 前,预启动应用 (iOS 需要 –app 参数,Android 需要 –app-pkg 和 –app-activity) | |
-lt, --launch-timeout | 90000 | (iOS-only) 等待 Instruments 启动的时间 | |
-g, --log | null | 将日志输出到指定文件 | --log /path/to/appium.log |
--log-level | debug | 日志级别; 默认 (console[:file]): debug[:debug] | --log-level debug |
--log-timestamp | false | 在终端输出里显示时间戳 | |
--local-timezone | false | 使用本地时间戳 | |
--log-no-colors | false | 不在终端输出中显示颜色 | |
-G, --webhook | null | 同时发送日志到 HTTP 监听器 | --webhook localhost:9876 |
--native-instruments-lib | false | (IOS-only) iOS 内建了一个怪异的不可能避免的延迟。我们在 Appium 里修复了它。如果你想用原来的,你可以使用这个参数。 | |
--app-pkg | null | (Android-only) 你要运行的apk的java包。 (例如, com.example.android.myApp) | --app-pkg com.example.android.myApp |
--app-activity | null | (Android-only) 打开应用时,启动的 Activity 的名字(比如, MainActivity) | --app-activity MainActivity |
--app-wait-package | false | (Android-only) 你想等待的 Activity 的包名。(比如, com.example.android.myApp) | --app-wait-package com.example.android.myApp |
--app-wait-activity | false | (Android-only) 你想等待的 Activity 名字(比如, SplashActivity) | --app-wait-activity SplashActivity |
--android-coverage | false | (Android-only) 完全符合条件的 instrumentation 类。 作为命令 adb shell am instrument -e coverage true -w 的 -w 的参数 | --android-coverage com.my.Pkg/com.my.Pkg.instrumentation.MyInstrumentation |
--avd | null | (Android-only) 要启动的 avd 的名字 | |
--avd-args | null | (Android-only) 添加额外的参数给要启动avd | --avd-args -no-snapshot-load |
--device-ready-timeout | 5 | (Android-only) 等待设备准备好的时间,以秒为单位 | --device-ready-timeout 5 |
--safari | false | (IOS-Only) 使用 Safari 应用 | |
--device-name | null | 待使用的移动设备名字 | --device-name iPhone Retina (4-inch), Android Emulator |
--platform-name | null | 移动平台的名称: iOS, Android, or FirefoxOS | --platform-name iOS |
--platform-version | null | 移动平台的版本 | --platform-version 7.1 |
--automation-name | null | 自动化工具的名称: Appium or Selendroid | --automation-name Appium |
--browser-name | null | 移动浏览器的名称: Safari or Chrome | --browser-name Safari |
--default-device, -dd | false | (IOS-Simulator-only) 使用instruments自己启动的默认模拟器 | |
--force-iphone | false | (IOS-only) 无论应用要用什么模拟器,强制使用 iPhone 模拟器 | |
--force-ipad | false | (IOS-only) 无论应用要用什么模拟器,强制使用 iPad 模拟器 | |
--language | null | iOS / Android 模拟器的语言 | --language en |
--locale | null | Locale for the iOS simulator / Android Emulator | --locale en_US |
--calendar-format | null | (IOS-only) iOS 模拟器的日历格式 | --calendar-format gregorian |
--orientation | null | (IOS-only) 初始化请求时,使用 LANDSCAPE (横屏) 或者 PORTRAIT (竖屏) | --orientation LANDSCAPE |
--tracetemplate | null | (IOS-only) 指定 Instruments 使用的 tracetemplate 文件 | --tracetemplate /Users/me/Automation.tracetemplate |
--show-sim-log | false | (IOS-only) 如果设置了, iOS 模拟器的日志会写到终端上来 | |
--show-ios-log | false | (IOS-only) 如果设置了, iOS 系统的日志会写到终端上来 | |
--nodeconfig | null | 指定 JSON 格式的配置文件 ,用来在 selenium grid 里注册 appiumd | --nodeconfig /abs/path/to/nodeconfig.json |
-ra, --robot-address | 0.0.0.0 | robot 的 ip 地址 | --robot-address 0.0.0.0 |
-rp, --robot-port | -1 | robot 的端口地址 | --robot-port 4242 |
--selendroid-port | 8080 | 用来和 Selendroid 交互的本地端口 | --selendroid-port 8080 |
--chromedriver-port | 9515 | ChromeDriver运行的端口 | --chromedriver-port 9515 |
--chromedriver-executable | null | ChromeDriver 可执行文件的完整路径 | |
--use-keystore | false | (Android-only) 设置签名 apk 的 keystore | |
--keystore-path | (Android-only) keystore 的路径 | ||
--keystore-password | android | (Android-only) keystore 的密码 | |
--key-alias | androiddebugkey | (Android-only) Key 的别名 | |
--key-password | android | (Android-only) Key 的密码 | |
--show-config | false | 打印 Appium 服务器的配置信息,然后退出 | |
--no-perms-check | false | 跳过Appium对是否可以读/写必要文件的检查 | |
--command-timeout | 60 | 默认所有会话的接收命令超时时间 (在超时时间内没有接收到新命令,自动关闭会话)。 会被新的超时时间覆盖 | |
--keep-keychains | false | (iOS) 当 Appium 启动或者关闭的时候,是否保留 keychains (Library/Keychains) | |
--strict-caps | false | 如果所选设备是appium不承认的有效设备,会导致会话失败 | |
--isolate-sim-device | false | Xcode 6存在一个bug,那就是一些平台上如果其他模拟器设备先被删除时某个特定的模拟器只能在没有任何错误的情况下被建立。这个选项导致了Appium不得不删除除了正在使用设备以外其他所有的设备。请注意这是永久性删除,你可以使用simctl或xcode管理被Appium使用的设备类别。 | |
--tmp | null | 可以被Appium用来管理临时文件的目录(绝对路径),比如存放需要移动的内置iOS应用程序。 默认的变量为 APPIUM_TMP_DIR ,在 *nix/Mac 为 /tmp 在windows上使用环境便令 TEMP 设定的目录。 | |
--trace-dir | null | 用于保存iOS instruments trace的 appium 目录,是绝对路径, 默认为 /appium-instruments | |
--intent-action | android.intent.action.MAIN | (Android-only) 用于启动 activity 的intent action | --intent-action android.intent.action.MAIN |
--intent-category | android.intent.category.LAUNCHER | (Android-only) 用于启动 activity 的intent category | --intent-category android.intent.category.APP_CONTACTS |
--intent-flags | 0x10200000 | (Android-only) 启动 activity 的标志 | --intent-flags 0x10200000 |
--intent-args | null | (Android-only) 启动 activity 时附带额外的 intent 参数 | --intent-args 0x10200000 |
--suppress-adb-kill-server | false | (Android-only) 如果被设定,阻止Appium杀掉adb实例。 |
分类: python+Appium
实战
- -a : 默认服务地址 127.0.0.1
- -p: 端口号 4730 (默认4723)
- -U: udid ,android的udid就是adb devices查看到的前面那一串
- --no-reset 不重置app 与desired_caps配置里面的 {"noReset": True,} 一个意思

cmd进入docs命令窗口输入:
appium -a 127.0.0.1 -p 4730 -U emulator-5554 --no-reset

小结
1.遇到的问题就是输入appium报错了,懵逼了,怎么办,不急一步一步解决它。

这个问题是由于安装的Node的版本太高,而你安装的appium版本较低造成,那么解决办法,就是要么将Node的版本降低,要么将appium版本升高即可。反正宏哥是这么解决了,如果你遇到了如果你遇到了,可以试一试我的方法,但是不能打包票哈。
2.好了,关于appium的服务命令行就到这里吧!
【下面是我整理的2023年最全的软件测试工程师学习知识架构体系图】
一、Python编程入门到精通
二、接口自动化项目实战
三、Web自动化项目实战

四、App自动化项目实战
五、一线大厂简历

六、测试开发DevOps体系
七、常用自动化测试工具

八、JMeter性能测试
九、总结(尾部小惊喜)
生命不息,奋斗不止。每一份努力都不会被辜负,只要坚持不懈,终究会有回报。珍惜时间,追求梦想。不忘初心,砥砺前行。你的未来,由你掌握!
生命短暂,时间宝贵,我们无法预知未来会发生什么,但我们可以掌握当下。珍惜每一天,努力奋斗,让自己变得更加强大和优秀。坚定信念,执着追求,成功终将属于你!
只有不断地挑战自己,才能不断地超越自己。坚持追求梦想,勇敢前行,你就会发现奋斗的过程是如此美好而值得。相信自己,你一定可以做到!
相关文章:
Appium+python自动化(三十五)- 命令启动appium之 appium服务命令行参数(超详解)
简介 前边介绍的都是通过按钮点击启动按钮来启动appium服务,有的小伙伴或者童鞋们乍一听可能不信,或者会问如何通过命令行启动appium服务呢?且听一一道来。 一睹为快 其实相当的简单,不看不知道,一看吓一跳…...
vmware的window中安装GNS3
1.向vmware中的windows虚拟机传送文件 点击虚拟机-安装VMwaretools 安装在虚拟机上面 此图标代表已经成功,将文件复制到虚拟机上里面 2.安装 安装gns3,需要先安装winpcap(检查网卡)和wireshark(对winpcap上数据进行抓…...
FPGA XDMA 中断模式实现 PCIE3.0 AD7606采集 提供2套工程源码和QT上位机源码
目录 1、前言2、我已有的PCIE方案3、PCIE理论4、总体设计思路和方案AD7606数据采集和缓存XDMA简介XDMA中断模式QT上位机及其源码 5、vivado工程1--BRAM缓存6、vivado工程2--DDR4缓存7、上板调试验证8、福利:工程代码的获取 1、前言 PCIE(PCI Express&am…...
某某大学某学院后台Phar反序列化GetShell
觉得这个洞还算有点意思,可以记录一下 首先在另一个二级学院进行目录扫描时发现源码www.rar,并且通过一些页面测试推测这两个二级学院应该是使用了同一套CMS 分析源码,发现使用的是ThinkPHP 5.1.34 LTS框架 通过APP、Public得到后台访问路径…...
【ChatGPT辅助学Rust | 基础系列 | 基础语法】变量,数据类型,运算符,控制流
文章目录 简介:一,变量1,变量的定义2,变量的可变性3,变量的隐藏 二、数据类型1,标量类型2,复合类型 三,运算符1,算术运算符2,比较运算符3,逻辑运算…...
使用云服务器和Frp(快速反向代理)框架快速部署实现内网穿透
目录 一. 背景1.1 内网穿透1.2 Frp介绍1.3 Frp配置流程 二. 云服务器配置2.1 配置安全组2.2 编写frps.ini 三. 内网主机配置3.1 编辑frpc.ini文件3.2 启动服务并配置开机自启动 四. 参考文献 一. 背景 现在有一台ubuntu云服务器,我想通过内网穿透将一台内网的主机当…...
Mac 上使用 Tesseract OCR 识别图片文本
Tesseract OCR 引擎:Tesseract是一个开源的OCR引擎,你需要先安装它。可以从Tesseract官方网站(https://github.com/tesseract-ocr/tesseract)下载适用于你的操作系统的安装程序或源代码,并按照官方文档进行安装。 Tes…...
《MapboxGL 基础知识点》- 放大/缩小/定位/级别
中心点 getCenter:获取中心点 const {lng, lat} map.getCenter(); setCenter:设置中心点 // lng, lat map.setCenter([134, 28]); 缩放级别 getZoom:获取当前缩放级别 map.getZoom(); setZoom:设置缩放级别 map.setZoom(5…...
VScode的简单使用
一、VScode的安装 Visual Studio Code简称VS Code,是一款跨平台的、免费且开源的现代轻量级代码编辑器,支持几乎主流开发语言的语法高亮、智能代码补全、自定义快捷键、括号匹配和颜色区分、代码片段提示、代码对比等特性,也拥有对git的开箱…...
# Unity 如何获取Texture 的内存大小
Unity 如何获取Texture 的内存大小 在Unity中,要获取Texture的内存文件大小,可以使用UnityEditor.TextureUtil类中的一些函数。这些函数提供了获取存储内存大小和运行时内存大小的方法。由于UnityEditor.TextureUtil是一个内部类,我们需要使…...
dolphinscheduler switch+传参无坑版
dolphinscheduler 的前后传参有较多的坑,即便是3.0.5版本仍然有一些bug 下面是目前能无坑在3.0.5版本上使用的操作 前置任务 在界面上设置变量和参数名称 跟官方网站不一样,注意最后一行一定使用echo ${setValue(key$query)}的方式,注意引…...
VINS-fusion安装
VINS-fusion中用的opencv3,如果安装的opencv4要做一系列替换 VINS-Mono在opencv4环境下的安装问题和解决方法 https://zhuanlan.zhihu.com/p/548140724 Vins-Fusion安装记录 https://zhuanlan.zhihu.com/p/432167383 CV_FONT_HERSHEY_SIMPLEX -> cv::FONT_HER…...
智慧消防:如何基于视频与智能分析技术搭建可视化风险预警平台?
一、背景分析 消防安全是一个重要的话题,涉及到每个人的生活和安全。每年都会发生大量的火灾,给人们带来极大的危害,摧毁了大量的财产,甚至造成了可怕的人员伤亡。而消防安全监督管理部门人员有限,消防安全监管缺乏有…...
selenium定位元素的方法
Selenium可以驱动浏览器完成各种操作,比如模拟点击等。要想操作一个元素,首先应该识别这个元素。人有各种的特征(属性),我们可以通过其特征找到人,如通过身份证号、姓名、家庭住址。同理,一个元…...
RISC-V特权级别
特权级别 RISC-V共有6个特权级别: 机器模式(M模式) M模式全称为Machine mode(机器模式)运行在这个模式下的程序为最高权限,它属于RISC-V里的最高权限模式,它具有访问所有资源的权限ÿ…...
RISC-V 指令集介绍
1. 背景介绍 指令集从本质上可以分为复杂指令集(Complex Instruction Set Computer,CISC)和精简指令集(Reduced Instruction Set Computer,RISC)两种。复杂指令集的特点是能够在一条指令内完成很多事情。 指…...
操作系统5
设备管理 I/O设备 什么是?--- 将数据Input/Output(输入/输出)计算机的外部设备。 分类: 按使用特性:人机交互类外设、存储设备、网络通信设备; 按传输速度:低速、中速、高速设备࿱…...
K8S系列文章之 Docker常用命令
一、镜像基础命令: $ docker info # 查看docker信息 $ docker system df # 查看镜像/容器/数据卷所占的空间。 $ ip addr #查看容器内部网络地址。 $ docker images # 查看镜像 $ docker search 镜像名称 # 搜索镜像 --limit :只列出N个镜像,默认为25个…...
谷歌: 安卓补丁漏洞让 N-days 与 0-days 同样危险
近日,谷歌发布了年度零日漏洞报告,展示了 2022 年的野外漏洞统计数据,并强调了 Android 平台中长期存在的问题,该问题在很长一段时间内提高了已披露漏洞的价值和使用。 更具体地说,谷歌的报告强调了安卓系统中的 &quo…...
linux 学成之路(基础篇)(二十三)MySQL服务(下)
目录 一、用户权限管理概述 二、用户权限类型 三、用户赋予权限 四、删除权限 五、删除用户 一、用户权限管理概述 数据库用户权限管理是数据库系统中非常重要的一个方面,它用于控制不同用户访问和操作数据库的权限范围。数据库用户权限管理可以保护敏感数据和…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...
实战设计模式之模板方法模式
概述 模板方法模式定义了一个操作中的算法骨架,并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下,重新定义算法中的某些步骤。简单来说,就是在一个方法中定义了要执行的步骤顺序或算法框架,但允许子类…...
大模型——基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程
基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程 下载安装Docker Docker官网:https://www.docker.com/ 自定义Docker安装路径 Docker默认安装在C盘,大小大概2.9G,做这行最忌讳的就是安装软件全装C盘,所以我调整了下安装路径。 新建安装目录:E:\MyS…...



