用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. 配置完aop不能返回json

    遇到一个bug,配置了记录controller层的aop,后来发现是因为我aop是写在controller层(在springmvc的容器中)而开启aop配置却写在spring中,所以不起作用,需要在s ...

  2. 小程序外链跳转web-view系列问题

    1.当小程序需要跳转外链时要上小程序后台配置业务域名,配置业务域名需要上传一个验证文件到你跳转的外链的服务器上的根目录里: 2. (1)第一种方法:.当小程序在同一个页面根据后台接口获取的url进行小 ...

  3. grep 提取百度网盘的链接

    弄到一堆学习资料,都是网盘地址,其中有很多失效了,不想一个个试 3.3第20季:HTML5特效实战 https://pan.baidu.com/s/1kVBrpZp 3.4第21季:3小时玩转微信小程 ...

  4. 4418开发板基于Linux-c测试程序的编译和运行

    基于iTOP4418开发板的Linux-c的测试程序iTOP-4418 开发板可以运行的文件系统很多,在具体的文件系统上实现特定功能前,可以使用 Linux-c 程序来测试硬件以及驱动.而且这些程序很 ...

  5. 搭建WordPress个人博客

    1. 准备LNMP环境 LNMP 是 Linux.Nginx.MySQL 和 PHP 的缩写,是 WordPress 博客系统依赖的基础运行环境.我们先来准备 LNMP 环境 安装Nginx 使用 y ...

  6. Cf D. Nauuo and Circle

    https://codeforces.com/contest/1173/problem/D 题意: 给出你一个包含 n 个点的树,这 n 个点编号为 1~n: 给出一个圆,圆上放置 n 个位置,第 i ...

  7. 吴裕雄--天生自然python学习笔记:pandas模块读取 Data Frame 数据

    读取行数据 读取一个列数据的语法为: 例如,读取所有学生自然科目的成绩 : import pandas as pd datas = [[65,92,78,83,70], [90,72,76,93,56 ...

  8. commonhelper 通用类:计时器、数组去重、自动生成日志编号、生成随机数、处理字符串

    using System;using System.Collections.Generic;using System.Diagnostics;using System.Text; namespace ...

  9. 前端-html-长期维护

    ###############     前端学什么?    ################ # 前端三大部分 # HTML,页面内容,学习标签 # CSS,页面样式,学习选择器和属性 # JS,页面 ...

  10. 【Linux_Shell 脚本编程学习笔记五、Oracle JDK1.8 安装shell 脚本】

    脚本使用说明: 首先在脚本的同级目录下有个 jdk的安装包 脚本和安装包必须在同级目录下才能够安装(脚本没有优化,还可以使用  wget  从网上下载指定版本的  jdk 安装包) #!/bin/sh ...