跟selenium操作浏览器原理类似,这是用appium操作移动设备的一个自动化功能,自娱自乐,主要是通过小案例引出相关技术

一、环境配置:
1、安装 jdk 1.8+ ,并配环境变量
2、安装Android SDK,可以直接下载安装,也可以通过android-studio里面安装,安装好后配环境变量,配好后cmd后输入adb执行成功则配好
3、安装appium 1.8.0,我用的这个版本,还挺稳定,原生和微信H5支持还可以,其他版本试过一些,可能原生支持还行,微信公众号H5页面支持不友好

二、查看元素
sdk安装好后,找到uiautomatorviewer.bat打开,用来获取元素id、text等属性,用于我们定位元素,这点跟selenium那一套基本一致,不过有一点值得注意的是,安卓app里面的id并不是唯一的,这个跟在web里面有区别,用id的时候注意看下是否是唯一元素

用左上角的工具审查元素,比如*键,可以看到id是star,其他按键各种元素id查看方式一致

三、配置信息获取

1、电脑手机通过数据线连接好,输入命令adb devices,获取手机的设备识别号


2、命令行输入:adb shell dumpsys window windows | findstr “Current”
用来获取当前应用的包名和启动页
包名:com.android.contacts
启动页:com.android.contacts.activities.TwelveKeyDialer


四、代码编写

代码如下,我这里有相关引入文件

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,互帮互助,
群里还有不错的视频学习教程和PDF电子书!
'''
import sys
sys.path.insert(0,"C:\\Users\\Administrator\\Desktop\\imooc\\python_call")
from action import Action
from appium import webdriveraction = Action()
# 相关配置
action.desired_caps['platformName'] = 'Android' # 平台
action.desired_caps['platformVersion'] = '7.0' # Android版本
action.desired_caps['deviceName'] = 'a20bc6990604' # 设备号
action.desired_caps['appPackage'] = 'com.android.contacts' # 包名
action.desired_caps['appActivity'] = 'com.android.contacts.activities.TwelveKeyDialer' # 启动页
action.desired_caps['unicodeKeyboard'] = True # 使用unicode编码方式发送字符串
action.desired_caps['resetKeyboard'] = True # 将键盘隐藏起来,默认true
action.desired_caps['noReset'] = True # 应用状态是否需要重置,默认true
action.desired_caps['automationName'] = 'Uiautomator2' # 自动化引擎,兼容原生和H5# 控制远程appium
action.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", action.desired_caps)# 点击事件
action.click_key("id=>one")
action.click_key("id=>five")
action.click_key("id=>two")
action.click_key("id=>three")
action.click_key("id=>six")
action.click_key("id=>two")
action.click_key("id=>eight")
action.click_key("id=>eight")
action.click_key("id=>eight")
action.click_key("id=>star")
action.click_key("id=>star")
action.click_key("id=>call_sim1")

其中click_key是我自定义的方法,比如传入id=>star后,根据=>进行split切分,前面是id,后面是id值,有些时候我会用xpath写法,其实我下面是在项目中涉及很多变量,很多单独维护了,可能你看起来有点复杂,其实跟selenium差不多,点击方法就是click,找元素就是find_element,然后根据id找的话,要把id值传进去

byDict = {"xpath": By.XPATH,"id": By.ID,
}
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,互帮互助,
群里还有不错的视频学习教程和PDF电子书!
'''
def find_ele(self, loc):print(loc.split("=>")[0],loc.split("=>")[1])element = WebDriverWait(self.driver, 30).until(lambda x: x.find_element(byDict[loc.split("=>")[0]], loc.split("=>")[1]))print(element)return elementdef click_key(self, loc):self.find_ele(loc).click()

五、运行

启动appium,以默认0.0.0.0:4723启动即可,然后运行python程序,即可看到手机拨打电话执行过程

用Python实现拨打电话相关推荐

  1. python实现自动拨打电话_twilio python自动拨打电话,播放自定义mp3音频的方法

    有个小项目,需求是某事件发生时,给客户打电话,提醒客户.需要事先录制好一段音频,客户接通电话后,自动播放. 1. 注册twilio账号 2. 买一个电话号码 3. 安装twilio pip insta ...

  2. twilio python自动拨打电话,播放自定义mp3音频

    有个小项目,需求是某事件发生时,给客户打电话,提醒客户.需要事先录制好一段音频,客户接通电话后,自动播放. 这里用到了twilio:https://www.twilio.com ,分享下. 1. 注册 ...

  3. 用Python拨打电话

    用python拨打电话,先看小视频 Python自动化技术广泛应用于测试.运维相关领域,我自己现在也是做的这方面,工资也不比其他方向少,就业相对容易的多,而且需求的公司也多,对后端框架之类也要求不是很 ...

  4. python实现自动打电话软件_用Python拨打电话

    用python拨打电话,先看小视频 跟selenium操作浏览器原理类似,这是用appium操作移动设备的一个自动化功能,自娱自乐,主要是通过小案例引出相关技术 一.环境配置: 1.安装 jdk 1. ...

  5. python实现自动拨打电话_python 实现手机自动拨打电话的方法(通话压力测试)

    现在能用自动化实现的,尽量使用自动化程序去操作,代替人工去操作,更有效率. 今天说下用python结合adb命令去实现安卓手机端的通话压力测试. #操作前先在设置里打开power键可以结束通话按钮,否 ...

  6. 教你用Python拨打电话

    作者 | 吴成 来源 | python爬虫人工智能大数据(ID:pylearn) 用Python拨打电话,先看小视频. 跟selenium操作浏览器原理类似,这是用appium操作移动设备的一个自动化 ...

  7. python实现自动打电话-python 实现手机自动拨打电话的方法(通话压力测试)

    现在能用自动化实现的,尽量使用自动化程序去操作,代替人工去操作,更有效率. 今天说下用python结合adb命令去实现安卓手机端的通话压力测试. #操作前先在设置里打开power键可以结束通话按钮,否 ...

  8. python 实现手机自动拨打电话(通话压力测试)

    现在能用自动化实现的,尽量使用自动化程序去操作,代替人工去操作,更有效率. 今天说下用python结合adb命令去实现安卓手机端的通话压力测试. #操作前先在设置里打开power键可以结束通话按钮,否 ...

  9. linux 模拟打电话,Ubuntu+Python+UIAutomator写Android自动化测试脚本-模拟拨打电话

    序言 首先介绍一下python和uiautomator 1.UIAutomator是Android官方推出的安卓应用界面自动化测试工具,是最理想的针对APK进行自动化功能回归测试的利器,使用UIAut ...

最新文章

  1. 力扣:169. 多数元素
  2. Beam Search还能更快?结合优先队列的最佳优先化Beam Search
  3. 前端学习(2189):Promise的介绍和基本使用二
  4. python装饰器函数执行后日志_python 装饰器理解
  5. Unity3D学习笔记(二十五):文件操作
  6. 耳机音量过大降低听力?世界卫生组织推出新政策
  7. 全连接的多层神经网络结构(MultiLayerNet)
  8. 【iOS】Touch Drag Inside 和 Touch Drag Outside、Touch Drag Enter、Touch Drag Exit的区别
  9. sql server 安装时提示要重启
  10. springboot整合quartz进行数据库存储
  11. 蚂蚁金服高要求的领域建模能力,对研发来说到底指什么?
  12. 马化腾:这一类中层干部,我最多忍你半年
  13. 视频教程-沐风老师3DMAX石墨烯建模视频教程-3Dmax
  14. 云层高度方法总结:激光雷达信号反演/遥感数据估计
  15. 状态码的含义,以及HTTP中常见的状态码
  16. Symmetric Eigenvalue Decomposition
  17. C语言数据的输入输出
  18. IOS性能调优系列:使用Zombies动态分析内存中的僵尸对象
  19. 【题】【矩阵】NKOJ 1901 喜欢奇数的面包师
  20. C语言实现二分法查找某个数字(超详细)

热门文章

  1. QQ/微信/支付宝 收款码 美化的教程 超级好看
  2. php直接读取导入excel文件内容
  3. 【UE4源代码观察】尝试调试UBT
  4. 重拾java基础知识总结(超级经典)
  5. i7处理器好吗_i5和i7区别有多大,性能差距大吗?i5-9400F和i7-9700F的区别对比
  6. 01.机器学习的简介
  7. 转载酷壳-技术人员的发展之路
  8. java植物大战僵尸_植物大战僵尸java游戏
  9. Upload-labs 1-21关 靶场通关攻略(全网最全最完整)
  10. Flex 是什么? flex和flash是什么关系?(转)