用python拨打电话,先看小视频

跟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

四、代码编写

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

import sys
sys.path.insert(0,"C:\\Users\\Administrator\\Desktop\\imooc\\python_call")
from action import Action
from appium import webdriver action = 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,
}
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 element def click_key(self, loc):
  self.find_ele(loc).click()

五、运行

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

源码获取:

公众号回复:电话

用Python拨打电话的更多相关文章

  1. 黑科技,利用python拨打电话,控制手机技术!

    跟selenium操作浏览器原理类似,这是用appium操作移动设备的一个自动化功能,自娱自乐,主要是通过小案例引出相关技术 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很 ...

  2. 脚本控制向Android模拟拨打电话,发送短信,定位设置功能

    做行为触发的时候要向模拟器实现拨打电话,发送短信,定位设置的的功能,可以很方便通过telnet localhost  5554实现. 写个脚本很快的搞定了.网上资料很多,脚本的很少,也所积点德啦. 写 ...

  3. Android无需申请权限拨打电话

    Android打电话有两种实现方法: 第一种方法,拨打电话跳转到拨号界面.源代码如下: Intent intent = new Intent(Intent.ACTION_DIAL); Uri data ...

  4. 【原】iOS学习之三种拨打电话方式的比较

    拨打电话小编从网上找到三种,在这里做一些总结和比较 1.基本使用 NSString *str = [[NSMutableString alloc] initWithFormat:@"tel: ...

  5. 拨打电话tel: 跳转到邮件mailto:(html)

    拨打电话 <a href="tel://0571866000">0571-866000</a> 跳转到邮件 <a href="mailto: ...

  6. ios调用本地拨打电话,发送短信

    电话.短信是手机的基础功能,iOS中提供了接口,让我们调用.这篇文章简单的介绍一下iOS的打电话.发短信在程序中怎么调用. 1.打电话   [[UIApplication sharedApplicat ...

  7. iOS拨打电话的三种方式

    iOS拨打电话的三种方式 1,这种方法,拨打完电话回不到原来的应用,会停留在通讯录里,而且是直接拨打,不弹出提示 1 2 var string = "tel:" + "1 ...

  8. a标签的妙用-拨打电话、发送短信、发送邮件

    前端时间在做手机WAP网站时,遇到需要点击页面上显示的电话号能直接拨号的需求,查找资料发现可以使用html的a标签完美实现该需求!记录下来以备后用...... 目前主流手机浏览器对H5的支持已经很不错 ...

  9. iOS 拨打电话三种方法

    小弟查了很多地方的关于iOS程序拨打电话,大都不全,今天我总结了三种方法,各有不同,拿来给大家分享,希望给大家有所帮助1,这种方法,拨打完电话回不到原来的应用,会停留在通讯录里,而且是直接拨打,不弹出 ...

随机推荐

  1. JS导出、导入EXCEL(案例)

    插件下载地址:http://oss.sheetjs.com/js-xlsx/xlsx.full.min.js 1.导出excel <!DOCTYPE html> <html> ...

  2. 数据库my.ini配置

    数据库my.ini配置 通过配置文件统一配置的目的:统一管理 服务端(mysqld) .客户端(client) 配置了 mysqld(服务端) 的编码为utf8,那么再创建的数据库,默认编码都采用 1 ...

  3. JVM(三)内存结构图

    JVM内存结构图:

  4. ERP上线通用模板

    一.引言    随着现代信息技术的发展与广泛应用,现代社会的快速发展和越来越追求效率的现状,对各行各业的管理的水平有了进一步的提高.XX企业作为我国的国民经济发展的基础产业,其信息化建设的水平直接关系 ...

  5. 33)new和delete关键字

    ---------------------------------------------------------------------------------------------------- ...

  6. 使用xb文件恢复mysql数据

    1.安装工具Percona XtraBackup MySQL 5.6及之前的版本需要安装 Percona XtraBackup 2.3,安装指导请参见官方文档Percona XtraBackup 2. ...

  7. Flink(三) —— 运行架构

    Flink运行时组件 JobManager 作业管理器 TaskManager 任务管理器 ResourceManager 资源管理器 Dispatcher 分发器 任务提交流程 任务调度原理 Job ...

  8. axios 模拟同步请求

    axios本身没有同步请求,但是我们很多情况下必须得需要同步请求.那么应该怎么做? 上网查了一些资料有人说用es6的 async +  assert 我不知道有没有效果,因为我的功能中是没啥效果的. ...

  9. git命令简单使用

    git config --global user.name 'sss' git config --global user.email 'huahua@163.com' cd d:/mywork git ...

  10. 四剑客(awk)

    AWK AWK简介 虽然sed编辑器是非常方便自动修改文本文件的工具,但其也有自身的限制.通常你需要一个用来处理文件中的数据的更高级工具,它能提供一个类编程环境来修改和重新组织文件中的数据.这正是ga ...