Python Appium操作

启动appium:appium -a 127.0.0.1 -p 4723 --log xxx.log --local-timezone

Appium 服务命令行参数

  • 启动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

然后编写长按函数:

wait里的时间单位是毫秒,长按N毫秒释放

以下是总结的只是碎片:


                               手机操作方法.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()        括号里填入的是键盘按键的数字代号

手机物理键数字代码

键盘按键数字代号

原文地址:https://www.cnblogs.com/moying-wq/p/10836040.html

时间: 2024-07-31 02:18:30

Python Appium操作的相关文章

python appium操作手机及app各种方法

在网上看了些,一起整理了下,还是有些不够全,但都比较常用了,先放出来吧: #锁定屏幕时间秒 driver.lock(5) #将APP放置后台 参数时间秒 driver.background_app(5) #收起键盘 driver.hide_keyboard() #启动Activity driver.start_activity('包名', 'activity名') #打开通知栏 driver.open_notifications() #检查应用是否已经安装 参数包名 driver.is_app_

Python + Appium 环境搭建

---恢复内容开始--- Appium自动化公司内部测试培训1-环境搭建 课程目的 一.Python + Appium 环境搭建 课程内容 1    安装前准备工作 搭建环境所需要的安装文件已经下载好,从SVN上获取即可,解压,如下 2   Appium环境搭建 Appium是一个开源的,适用于原生或者移动网络和混合应用程序在 iOS 和 Android 平台上的的开源自动化测试框架. 2.1  安装Node.js 点击安装文件,下一步下一步直接安装,安装成功后,输入cmd打开windows的命

基于python+appium通过图片对比来做的UI自动化

1.python + appium +图片对比实现UI自动化:背景:当手机需要适配不同的语言时,测试过程中易出现因为语言不熟悉,导致UIbug被遗漏(例如setting中的描述性文字显示不完整等等问题)环境搭建:需使用模块PIL,Windows版本链接地址:http://pythonware.com/products/pil/ubuntu (使用16.04虚拟机):sudo apt-get install python-imaging安装过程遭遇Unable to acquire the dpk

python excel操作及网络编程

python excel操作 一:excel获取值操作 1.导入模块 import xlrd 2.打开Excel文件读取数据 data = xlrd.open_workbook('excelFile.xls') 3.使用技巧 获取一个工作表 table = data.sheets()[0]          #通过索引顺序获取 table = data.sheet_by_index(0) #通过索引顺序获取 table = data.sheet_by_name(u'Sheet1')#通过名称获取

Python字符串操作

isalnum()判断是否都是有效字符串 ? 1 2 3 4 5 6 7 8 9 10 11 12 >>> ev1 = 'evilxr' >>> ev2 = 'ev1il2xr3' >>> ev3 = '.,/[email protected]#' >>> a = ev1.isalnum() >>> print a True >>> b = ev2.isalnum() >>> pr

Python元组操作详解

本文和大家分享的主要是python 元组操作相关内容,一起来看看吧,希望对大家 学习python有所帮助. 谈起元组,有了解的可能会觉得这个类型跟列表是非常相似的,操作方面也基本雷同,不过他们本质的区别是,元组是不可变数据类型,还记得我们之前提到过的字符串也是不可变数据类型吗?让我们再回顾下什么是不可变性,不可变性就是一旦一个对象被定义了,它的值就不能再本更新,除非是重新创建一个新的对象,那元组跟字符串的区别是,元组是一个容器对象,它可以包含一个或多个元素,基本特性我们  就介绍了这里,接下来我

Python简单操作笔记

Python 类型转换 str(),repr()|format() : 将非字符类型转成子串 int() : 转为整形 float() : 转为浮点型 list(s) : 将字串s转成列表 tuple(s) : 将字串s转成元组 set(s) : 将字串s转成集合 frozenset(s) : 将字串s转成不可变集合 dict(s) : 创建字典 其d必须是(key,value)的元组序列; chr(x) : 将整形转成字符 ord(x) : 将字符转成整形 hex(x) : 将整形转换成16进

Python文件操作及seek偏移详解

本文和大家分享的主要是python中文件操作及seek偏移相关内容,一起来看看吧,希望对大家学习python有所帮助. 一.Python文件操作中的编码 本次测试是基于Python 2.7.12  OS:Ubuntu 16.04  pycharm环境,以及Win7下2.7.12; 首先说下汉字在文件中占用的字节数,这个先看以下实验(Win7)下 因为Linux下不支持gbk,本文不讲utf-8 ,gbk编码具体知识.本次实验只讲解python在使用utf-8和gbk编码时,对汉字占用的字节有所不

获取appPackage和appActivity(python+appium)

(一般情况下,这两个参数可以让开发提供:如果有某种原因不能获取,而你只有安装包,那么可以通过以下步骤获取) 步骤一: 连接真机或开启安卓模拟器,打开Appium.(前提是python+appium环境是OK的) 步骤二: 在真机或模拟器上打开需要获取appPachage和appActivity的apk 步骤三: 开启日志输出(进入cmd,执行adb logcat>D:/log.txt)--路径自己随意哈 步骤四: 找到你刚输出的日志,打开日志,ctrl+f搜索下 Displayed,就能看到你需