Python Appium操作
Posted moying-wq
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python Appium操作相关的知识,希望对你有一定的参考价值。
启动appium:appium -a 127.0.0.1 -p 4723 --log xxx.log --local-timezone
- 启动appium
-p 4723
指定端口--log xxx.log
指定日志保存到指定文件内(可以是绝对路径)--local-timezone
指定时间为本地时间--log-level error
设置日志级别,默认是debug- win平台在命令的开始添加
start /b
,mac平台在命令的末尾添加&
:表示后台启动,不加时,后续的程序无法运行(终端单独启动时可以不加)
# win start /b appium -a 127.0.0.1 -p 4723 --log xxx.log --local-timezone # mac appium -a 127.0.0.1 -p 4723 --log xxx.log --local-timezone &
关闭appium
- 关闭相应端口对应的进程即可
根据端口号查看进程&关闭相应的进程
win系统
根据端口号查找进程号netstat -o -n -a | findstr :端口号
# 命令 netstat -aon|findstr 4723 # 结果 TCP 127.0.0.1:4723 0.0.0.0:0 LISTENING 3352
终止进程taskkill /F /PID 进程号(PID号)
# 命令 taskkill /f /pid 3352 # 结果 成功: 已终止 PID 为 3352 的进程。
- 终止所有appium进程
taskkill /f /t /im node.exe
mac系统
-
根据端口号查找进程号:
lsof -i tcp: 4723
-
终止进程:
kill 进程号(PID号)
实例代码
pc = input(‘请输入系统 win or mac:‘) def stop_appium(post_num=4723): ‘‘‘关闭appium服务‘‘‘ if pc.upper() ==‘WIN‘: p = os.popen(f‘netstat -aon|findstr {post_num}‘) p0 = p.read().strip() if p0 != ‘‘ and ‘LISTENING‘ in p0: p1 = int(p0.split(‘LISTENING‘)[1].strip()[0:4]) # 获取进程号 os.popen(f‘taskkill /F /PID {p1}‘) # 结束进程 print(‘appium server已结束‘) elif pc.upper() == ‘MAC‘: p = os.popen(f‘lsof -i tcp:{post_num}‘) p0 = p.read() if p0.strip() != ‘‘: p1 = int(p0.split(‘\\n‘)[1].split()[1]) # 获取进程号 os.popen(f‘kill {p1}‘) # 结束进程 print(‘appium server已结束‘) def start_appium(post_num=4723): ‘‘‘开启appium服务‘‘‘ stop_appium(post_num) # 先判断端口是否被占用,如果被占用则关闭该端口号 # 根据系统,启动对应的服务 cmd_dict = { ‘WIN‘:f‘ start /b appium -a 127.0.0.1 -p {post_num} --log xxx.log --local-timezone ‘, ‘MAC‘:f‘appium -a 127.0.0.1 -p {post_num} --log xxx.log --local-timezone & ‘ } os.system(cmd_dict[pc.upper()]) time.sleep(3) # 等待启动完成 print(‘appium启动成功‘)
先记录自己辛苦百度之后写出来的东西:
记录一、长按某个元素的方法
首先导入 TouchAction 包:from appium.webdriver.common.touch_action import TouchAction
然后编写长按函数:
以下是总结的只是碎片:
手机操作方法.API应用
收起键盘:driver.hide_keyboard()
启动Activity参数(包名,activity名字):driver.start_activity(‘com.example.android.apis‘, ‘.Foo‘)
获取当前Activity:driver.current_activity
截取当前屏幕:driver.get_screenshot_as_file("文件名")
打开通知栏(打开下拉通知栏):driver.open_notifications()
检查应用是否已经安装(包名):driver.is_app_installed(‘com.example.android.apis‘)
安装应用(路径):driver.install_app(‘path/to/my.apk‘)
删除应用(包名):driver.remove_app(‘com.example.android.apis‘)
模拟设备摇晃:driver.shake()
关闭应用:driver.close_app()
启动应用:driver.launch_app()
将app置于后台A秒:driver.background_app(A)
重置(相当于卸载后重装):driver.reset()
获取应用的字符串:driver.app_strings
滑动屏幕(开始x,y坐标,滑动到的X,y坐标,持续时间ms):driver.swipe(startx=75, starty=500, endx=75, endy=0, duration=800)
双指向内移动缩小屏幕:driver.pinch(element=el)
双指往外移动来放大屏幕:driver.zoom(element=el)
从设备中拉出文件:driver.pull_file(‘Library/AddressBook/AddressBook.sqlitedb‘)
把文件放到设备中:
data = "some data for the file"
path = "/data/local/tmp/file.txt"
driver.push_file(path, data.encode(‘base64‘))
长按并将A拖拽到B:driver.drag_and_drop(A,B)
将A滚动到B:driver.scroll(A,B)
滑动:driver.swipe() driver.flick()(这个方法速度较快)
使用手机物理键
一句代码:driver.keyevent() 括号里填入的是手机物理按键的数字代号
driver.press_keycode() 括号里填入的是键盘按键的数字代号
以上是关于Python Appium操作的主要内容,如果未能解决你的问题,请参考以下文章
Python爬虫编程思想(128):使用Appium抓取移动数据--启动Appium服务
Python爬虫编程思想(128):使用Appium抓取移动数据--启动Appium服务