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

Python自动化技术广泛应用于测试、运维相关领域,我自己现在也是做的这方面,工资也不比其他方向少,就业相对容易的多,而且需求的公司也多,对后端框架之类也要求不是很高,是小白入门Python相对轻松好入门就业的方向,如果你通过这个例子,能感受到乐趣,不妨细细研究一下,市面上更多UI自动化案例可能都是基于web浏览器自动化来做的,主要原因是更稳定一些,而且技术难度更低,APP的Ui自动化如果技术不扎实,环境配不好,元素选择写不好,可能你跑几下程序就崩溃了,APP的自动化更多可能是基于接口自动化来做,但这些问题,并不妨碍我们学习,根据我的经验,常规的一些注意事项都注意到后,APP的UI自动化其实稳定性也还可以的

跟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程序,即可看到手机拨打电话执行过程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python通过调用ADB(Android Debug Bridge)接口可以实现自动打电话的功能。ADB是安卓手机调试桥的缩写,是一种用于在电脑和安卓设备之间通信的工具。 要在Python实现自动打电话,需要先安装ADB并配置好环境变量。然后可以使用Python的subprocess模块调用ADB命令来执行相关的操作。 以下是一个使用Python调用ADB接口实现自动打电话的简单示例代码: ```python import subprocess def auto_call(phone_number): # 使用ADB命令模拟按键操作,打电话 subprocess.call(['adb', 'shell', 'input', 'keyevent', 'KEYCODE_CALL']) # 使用ADB命令输入电话号码 subprocess.call(['adb', 'shell', 'input', 'text', phone_number]) # 使用ADB命令模拟按键操作,号 subprocess.call(['adb', 'shell', 'input', 'keyevent', 'KEYCODE_CALL']) # 调用自动打电话函数 auto_call('1234567890') ``` 上述代码中,首先使用`subprocess.call`函数调用ADB命令`adb shell input keyevent KEYCODE_CALL`来模拟按下号键。然后使用`adb shell input text`命令来输入电话号码。最后再次使用`adb shell input keyevent KEYCODE_CALL`命令来模拟按下号键,实现自动打电话的功能。 需要注意的是,以上代码仅仅是一个简单的示例,实际使用时可能需要根据具体情况进行调整和扩展。另外,使用ADB接口执行操作时需要连接到安卓设备,确保设备已启用开发者选项和USB调试模式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值