Appium+python自动化(三十五)- 命令启动appium之 appium服务命令行参数(超详解)

news2024/11/16 12:06:29

简介

前边介绍的都是通过按钮点击启动按钮来启动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)

服务器标志

所有的标志都是可选的,但是有一些标志需要组合在一起才能生效。

标志默认值描述例子
--shellnull进入 REPL 模式
--localizable-strings-diren.lprojIOS only: 定位 .strings所在目录的相对路径--localizable-strings-dir en.lproj
--appnulliOS: 基于模拟器编译的 app 的绝对路径或者设备目标的 bundle_id; Android: apk 文件的绝对路径--app /abs/path/to/my.app
--ipanull(IOS-only) .ipa 文件的绝对路径--ipa /abs/path/to/my.ipa
-U--udidnull连接物理设备的唯一设备标识符--udid 1adsf-sdfas-asdf-123sdf
-a--address0.0.0.0监听的 ip 地址--address 0.0.0.0
-p--port4723监听的端口--port 4723
-ca--callback-addressnull回调IP地址 (默认: 相同的IP地址)--callback-address 127.0.0.1
-cp--callback-portnull回调端口号 (默认: 相同的端口号)--callback-port 4723
-bp--bootstrap-port4724(Android-only) 连接设备的端口号--bootstrap-port 4724
-k--keep-artifactsfalse弃用,无效。trace信息现在保留tmp目录下,每次运行前会清除该目录中的信息。 也可以参考 –trace-dir 。
-r--backend-retries3(iOS-only) 遇到 crash 或者 超时,Instrument 重新启动的次数。--backend-retries 3
--session-overridefalse允许 session 被覆盖 (冲突的话)
--full-resetfalse(iOS) 删除整个模拟器目录。 (Android) 通过卸载应用(而不是清除数据)重置应用状态。在 Android 上,session 完成后也会删除应用。
--no-resetfalsesession 之间不重置应用状态 (iOS: 不删除应用的 plist 文件; Android: 在创建一个新的 session 前不删除应用。)
-l--pre-launchfalse在第一个 session 前,预启动应用 (iOS 需要 –app 参数,Android 需要 –app-pkg 和 –app-activity)
-lt--launch-timeout90000(iOS-only) 等待 Instruments 启动的时间
-g--lognull将日志输出到指定文件--log /path/to/appium.log
--log-leveldebug日志级别; 默认 (console[:file]): debug[:debug]--log-level debug
--log-timestampfalse在终端输出里显示时间戳
--local-timezonefalse使用本地时间戳
--log-no-colorsfalse不在终端输出中显示颜色
-G--webhooknull同时发送日志到 HTTP 监听器--webhook localhost:9876
--native-instruments-libfalse(IOS-only) iOS 内建了一个怪异的不可能避免的延迟。我们在 Appium 里修复了它。如果你想用原来的,你可以使用这个参数。
--app-pkgnull(Android-only) 你要运行的apk的java包。 (例如, com.example.android.myApp)--app-pkg com.example.android.myApp
--app-activitynull(Android-only) 打开应用时,启动的 Activity 的名字(比如, MainActivity)--app-activity MainActivity
--app-wait-packagefalse(Android-only) 你想等待的 Activity 的包名。(比如, com.example.android.myApp)--app-wait-package com.example.android.myApp
--app-wait-activityfalse(Android-only) 你想等待的 Activity 名字(比如, SplashActivity)--app-wait-activity SplashActivity
--android-coveragefalse(Android-only) 完全符合条件的 instrumentation 类。 作为命令 adb shell am instrument -e coverage true -w 的 -w 的参数--android-coverage com.my.Pkg/com.my.Pkg.instrumentation.MyInstrumentation
--avdnull(Android-only) 要启动的 avd 的名字
--avd-argsnull(Android-only) 添加额外的参数给要启动avd--avd-args -no-snapshot-load
--device-ready-timeout5(Android-only) 等待设备准备好的时间,以秒为单位--device-ready-timeout 5
--safarifalse(IOS-Only) 使用 Safari 应用
--device-namenull待使用的移动设备名字--device-name iPhone Retina (4-inch), Android Emulator
--platform-namenull移动平台的名称: iOS, Android, or FirefoxOS--platform-name iOS
--platform-versionnull移动平台的版本--platform-version 7.1
--automation-namenull自动化工具的名称: Appium or Selendroid--automation-name Appium
--browser-namenull移动浏览器的名称: Safari or Chrome--browser-name Safari
--default-device-ddfalse(IOS-Simulator-only) 使用instruments自己启动的默认模拟器
--force-iphonefalse(IOS-only) 无论应用要用什么模拟器,强制使用 iPhone 模拟器
--force-ipadfalse(IOS-only) 无论应用要用什么模拟器,强制使用 iPad 模拟器
--languagenulliOS / Android 模拟器的语言--language en
--localenullLocale for the iOS simulator / Android Emulator--locale en_US
--calendar-formatnull(IOS-only) iOS 模拟器的日历格式--calendar-format gregorian
--orientationnull(IOS-only) 初始化请求时,使用 LANDSCAPE (横屏) 或者 PORTRAIT (竖屏)--orientation LANDSCAPE
--tracetemplatenull(IOS-only) 指定 Instruments 使用的 tracetemplate 文件--tracetemplate /Users/me/Automation.tracetemplate
--show-sim-logfalse(IOS-only) 如果设置了, iOS 模拟器的日志会写到终端上来
--show-ios-logfalse(IOS-only) 如果设置了, iOS 系统的日志会写到终端上来
--nodeconfignull指定 JSON 格式的配置文件 ,用来在 selenium grid 里注册 appiumd--nodeconfig /abs/path/to/nodeconfig.json
-ra--robot-address0.0.0.0robot 的 ip 地址--robot-address 0.0.0.0
-rp--robot-port-1robot 的端口地址--robot-port 4242
--selendroid-port8080用来和 Selendroid 交互的本地端口--selendroid-port 8080
--chromedriver-port9515ChromeDriver运行的端口--chromedriver-port 9515
--chromedriver-executablenullChromeDriver 可执行文件的完整路径
--use-keystorefalse(Android-only) 设置签名 apk 的 keystore
--keystore-path(Android-only) keystore 的路径
--keystore-passwordandroid(Android-only) keystore 的密码
--key-aliasandroiddebugkey(Android-only) Key 的别名
--key-passwordandroid(Android-only) Key 的密码
--show-configfalse打印 Appium 服务器的配置信息,然后退出
--no-perms-checkfalse跳过Appium对是否可以读/写必要文件的检查
--command-timeout60默认所有会话的接收命令超时时间 (在超时时间内没有接收到新命令,自动关闭会话)。 会被新的超时时间覆盖
--keep-keychainsfalse(iOS) 当 Appium 启动或者关闭的时候,是否保留 keychains (Library/Keychains)
--strict-capsfalse如果所选设备是appium不承认的有效设备,会导致会话失败
--isolate-sim-devicefalseXcode 6存在一个bug,那就是一些平台上如果其他模拟器设备先被删除时某个特定的模拟器只能在没有任何错误的情况下被建立。这个选项导致了Appium不得不删除除了正在使用设备以外其他所有的设备。请注意这是永久性删除,你可以使用simctl或xcode管理被Appium使用的设备类别。
--tmpnull可以被Appium用来管理临时文件的目录(绝对路径),比如存放需要移动的内置iOS应用程序。 默认的变量为 APPIUM_TMP_DIR ,在 *nix/Mac 为 /tmp 在windows上使用环境便令 TEMP 设定的目录。
--trace-dirnull用于保存iOS instruments trace的 appium 目录,是绝对路径, 默认为 /appium-instruments
--intent-actionandroid.intent.action.MAIN(Android-only) 用于启动 activity 的intent action--intent-action android.intent.action.MAIN
--intent-categoryandroid.intent.category.LAUNCHER(Android-only) 用于启动 activity 的intent category--intent-category android.intent.category.APP_CONTACTS
--intent-flags0x10200000(Android-only) 启动 activity 的标志--intent-flags 0x10200000
--intent-argsnull(Android-only) 启动 activity 时附带额外的 intent 参数--intent-args 0x10200000
--suppress-adb-kill-serverfalse(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性能测试

九、总结(尾部小惊喜)

生命不息,奋斗不止。每一份努力都不会被辜负,只要坚持不懈,终究会有回报。珍惜时间,追求梦想。不忘初心,砥砺前行。你的未来,由你掌握!

生命短暂,时间宝贵,我们无法预知未来会发生什么,但我们可以掌握当下。珍惜每一天,努力奋斗,让自己变得更加强大和优秀。坚定信念,执着追求,成功终将属于你!

只有不断地挑战自己,才能不断地超越自己。坚持追求梦想,勇敢前行,你就会发现奋斗的过程是如此美好而值得。相信自己,你一定可以做到!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/807751.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TCP 三次握手四次挥手浅析

大家都知道传输层中的TCP协议是面向连接的,提供可靠的连接服务,其中最出名的就是三次握手和四次挥手。 一、三次握手 三次握手的交互过程如下 喜欢钻牛角尖的我在学习三次握手的时候就想到了几个问题:为什么三次握手是三次?不是…

shell脚本:使用mysqldump实现分库分表备份

一.什么是分库分表备份 分库分表备份是一种数据库备份策略,用于处理大型数据库系统中的数据分布和备份需求。当数据库的数据量非常大时,单个数据库可能无法满足性能和可扩展性的要求。为了解决这个问题,使用分库分表技术将数据库拆分成多个库…

解决eclipse 打开报错 An error has occurred. See the log file null.

解决eclipse 打开报错an error has ocurred. See the log file null 出现原因:安装了高版本的jdk,更换 jdk 版本,版本太高了。 解决方案:更改环境变量 改成 jkd 1.8

【RTT驱动框架分析00】-应用层函数调用流程-串口为例

应用层函数调用流程分析以-串口为例 1. rt_device_find调用流程 RTT内部有一个全局变量数组rt_object_container数组的数量就是 rt_object_info_type 内核对象的种类,其中包含一个RT_USING_DEVICE (设备的数据类型),数组内部的每一个变量包含一个链表&…

Codeforces算法心得——A. Escalator Conversations

大家好,我是晴天学长,今天开始尝试一些外国的题目了,不得不说,创新性挺高的,然后是全英文,也可以练练英文的水平,后面我会持续的更新的!加油!💪💪…

新零售行业如何做会员管理和会员营销

蚓链数字化营销系统全渠道会员管理解决方案,线上线下统一管理,打造私域流量,微信、门店会员全渠道管理,打通私域流量池,实现裂变营销: 开启新零售之路,必然要摒弃原有的管理模式,大…

JDK17 中的新特性初步了解

1. Switch 语句的增强 jdk12 ,switch语句不用写break了,直接写箭头和对应的值。 jdk 17中, 加了一个逗号,用于匹配多对一。 如果要在每个case里写逻辑,可以写在花括号里。 在返回值的前面加上yield的关键字。 也可以对…

如何查看网页中请求的路由地址

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

软考A计划-系统集成项目管理工程师-项目质量管理-中

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

MySQL中锁的简介——行级锁

1.行级锁概念及分类 可通过以下语句查看意向锁和行锁的加锁情况: select object_schema,object_name,index_name,lock_type,lock_mode,lock_data from performance_schema.data_locks;InnoDB的行锁是针对于索引加的锁,不通过索引条件检索数据&#xff0…

短视频矩阵营销系统技术开发者开发笔记分享

一、开发短视频seo抖音矩阵系统需要遵循以下步骤: 1. 确定系统需求:根据客户的需求,确定系统的功能和特点,例如用户注册登录、视频上传、视频浏览、评论点赞等。 2. 设计系统架构:根据系统需求,设计系统的…

【141. 环形链表】

来源:力扣(LeetCode) 描述: 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环&#x…

Android 测试

工程目录图 1- Espresso 2- uiautomator Espresso 文档UI Automator文档ui-automator 英文文档 请点击下面工程名称,跳转到代码的仓库页面,将工程 下载下来 Demo Code 里有详细的注释 代码:testespresso 参考文献 Android 利用 espre…

“RWEQ+”集成技术在土壤风蚀模拟与风蚀模数估算、变化归因分析中的实践

土壤风蚀是一个全球性的环境问题。中国是世界上受土壤风蚀危害最严重的国家之一,土壤风蚀是中国干旱、半干旱及部分湿润地区土地荒漠化的首要过程。中国风蚀荒漠化面积达160.74104km2,占国土总面积的16.7%,严重影响这些地区的资源开发和社会经…

Java的第十六篇文章——枚举、反射和注解(后期再学一遍)

目录 1. 枚举 1.1 学习目标 1.2 内容讲解 1.2.1 枚举的概述 1.2.2 为什么要使用枚举 1.2.3 作用 1.2.4 格式 2. 反射 2.1 学习目标 2.2 内容讲解 2.2.1 类加载(了解) 2.2.2 类的加载过程 2.2.3 类的初始化 2.2.4 类的加载器 2.2.5 Java系…

7年经验之谈 —— 浅谈web性能测试

什么是性能测试? web性能应该注意些什么? 性能测试,简而言之就是模仿用户对一个系统进行大批量的操作,得出系统各项性能指标和性能瓶颈,并从中发现存在的问题,通过多方协助调优的过程。而web端的性能测试…

9.容器服务更新和发现

文章目录 容器服务更新和发现服务发现consul概念关键特性总结 部署consul架构初始化部署群集查看 部署registrator服务器consul-template 模板文件consul多节点 容器服务更新和发现 服务发现 什么是服务注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。起初服务…

吃透《西瓜书》第三章 线性模型:对数几率回归

🍉 吃瓜系列 教材:《机器学习》 周志华著 🕒时间:2023/7/26 目录 一、对数几率回归 1.1 定义和基本思想 1.2 对数记录回归建模 1.3 广义线性模型 1.3.1 指数族分布 1.3.2 广义线性模型的三条假设 1.4 对数几率回归的广义线…

百城巡展 | 人大金仓7月携手全国伙伴赋能“一带一路”沿线区域协同创新

盛夏7月,人大金仓“百城巡展”来到西宁、乌鲁木齐、银川、拉萨,携手核心伙伴、用户,打造科技创新合作平台,不断打磨数据库领域中国方案,赋能“一带一路”沿线区域协同创新,助力信创产业高质量发展&#xff…

【C++】Day7 标准莫板库

1. 实现vector相关函数 #include <iostream>using namespace std;template <typename T> class Myvector { private:T* first;T* last;T* end; public:Myvector(int size 10){ //构造函数this->first new T[size];this->last this->first;this-&g…