移动端自动化python使用appium包登录qq

news2025/1/12 9:51:03

听标题挺高大上的,其实内容还是脚本小子的高度。。。
为了写个月报一下午抓紧学点东西,好凑点字数,汗。。。
为啥学这个内容,因为找内容的时候翻csdn翻到一个自动抢红包的,就是用的这个技术,前面实验挺好,到后面登录微信的时候先是微信密码忘了,后来又找不到ui控件的标识,到饭点了,不搞了。。。

文章目录

    • appium是什么
    • appium环境配置和使用
    • python-appium打开qq
    • appium inspector使用
    • python-appium登录qq
    • 参考链接

appium是什么

appium是一个开源的移动端自动化测试工具,支持跨平台。appium类库封装了标准selenium客户端类库,为用户提供json格式selenium命令以及额外的移动设备控制相关的命令等。

官网连接https://github.com/appium/appium-desktop/releases/

appium环境配置和使用

使用appium打开服务端,然后可以使用python第三方包appium的客户端来连接服务端,做一些任务

首先需要先安装好JDK和Android Sdk,网上一堆教程,这里不累赘了。

安装打开之后点击Edit Configurations

如果是配置好了环境变量后,appium会自动填充上路径,save就可以了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JOclSunb-1673428167038)(images/image-20230111135416941.png)]

点击start进入主界面
在这里插入图片描述

现在点击这个搜索图标会跳出一个网页,说这个功能给分离出来成为另一个软件了,从这个网页里下载就可以,

这个工具相当于连接上手机设备的一个app界面,然后鼠标点击界面上的控件可以查看对应的控件标识信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WlntTD7Y-1673428167045)(images/image-20230111142055297.png)]

pip安装Appium-Python-Client

pip install Appium-Python-Client

手机设备(这里使用逍遥模拟器)打开开发者模式,打开usb调试功能。就可以用电脑来连接手机设备了

adb:Android调试桥

用这个工具可以操作管理android模拟器或真机设备

adb devices -l: 可以查看当前电脑可以连接到的设备列表

adb查看手机上某个app的appPackage和appActivity

adb shell dumpsys activity recents | find "intent={"
在这里插入图片描述

appPackage=com.tencent.mobileqq
appActivity=.activity.SplashActivity

python-appium打开qq

在pycharm中运行如下代码,就可以自动让逍遥模拟器打开qq应用了

# 导入webdriver
from appium import webdriver

# 初始化参数
desired_caps = {
    'platformName': 'Android',  # 被测手机是安卓
    'platformVersion': '7',  # 手机安卓版本
    'deviceName': 'xxx',  # 设备名,安卓手机可以随意填写
    'appPackage': 'com.tencent.mobileqq',  # 启动APP Package名称
    'appActivity': '.activity.SplashActivity',  # 启动Activity名称
    'unicodeKeyboard': True,  # 使用自带输入法,输入中文时填True
    'resetKeyboard': True,  # 执行完程序恢复原来输入法
    'noReset': True,  # 不要重置App,如果为False的话,执行完脚本后,app的数据会清空,比如你原本登录了,执行完脚本后就退出登录了
    'newCommandTimeout': 6000,
}

# 连接Appium Server,初始化自动化环境
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

# 退出程序
# driver.quit()

appium inspector使用

获取控件标识而也可以用androidSDK目录下的\tools\bin\uiautomatorviewer.bat工具,点击工具左上角第二个图标自动获取设备当前界面的ui信息

将上面代码里的初始化参数输入到inspector中,然后点击start Session
在这里插入图片描述

启动后如下所示,这时就和在浏览器里F12的效果一样了,鼠标点击那个ui空间,右面会出现相应的id

在这里插入图片描述

python-appium登录qq

模拟输入用户名和口令点击登录操作

# 导入webdriver
from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy

# 初始化参数
desired_caps = {
    'platformName': 'Android',  # 被测手机是安卓
    'platformVersion': '7',  # 手机安卓版本
    'deviceName': 'xxx',  # 设备名,安卓手机可以随意填写
    'appPackage': 'com.tencent.mobileqq',  # 启动APP Package名称
    'appActivity': '.activity.SplashActivity',  # 启动Activity名称
    'unicodeKeyboard': True,  # 使用自带输入法,输入中文时填True
    'resetKeyboard': True,  # 执行完程序恢复原来输入法
    'noReset': True,  # 不要重置App,如果为False的话,执行完脚本后,app的数据会清空,比如你原本登录了,执行完脚本后就退出登录了
    'newCommandTimeout': 6000,
}

# 连接Appium Server,初始化自动化环境
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
# 设置等待时间,如果不给时间的话可能会找不到元素
driver.implicitly_wait(5)
# 点击登录
driver.find_element(AppiumBy.ID, "btn_login").click()
# 设置等待时间,如果不给时间的话可能会找不到元素
driver.implicitly_wait(3)
driver.find_element(AppiumBy.XPATH, '//android.widget.EditText[@content-desc="请输入QQ号码或手机或邮箱"]').send_keys("")
driver.find_element(AppiumBy.ID, "password").send_keys("")
# 键盘回车 driver.keyevent(66)
driver.find_element(AppiumBy.ID, "login").click()
# 退出程序
# driver.quit()

参考链接

https://ispacesoft.com/42295.html

还有一个批量删除被删除的好友,原理比较简单,但是在复现的过程中控件标识找不到,遂放弃

https://blog.csdn.net/ityard/article/details/109558416

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/156705.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

React Native 三端同构在雪球的实践

随着移动互联网的迅猛发展,目前市面上「端」的形态多种多样,iOS、Android 、H5、微信小程序等各种端大行其道,同一个业务需求往往又需要在多端上去实现,针对不同端去编写多套代码的成本显然非常高。雪球大前端团队将今年在跨端能力…

提取DC综合report_constrain all violator中big neg slack

问题描述 在综合前几版中&#xff0c;通过report_constrain -all_violator命令到得到的违反数量非常多&#xff0c;但暂时只关注比较大的setup/hold违例。 &#xff08;1&#xff09;我们希望提取 < -1.0的违例 &#xff08;2&#xff09;需要把多行合并到一行。 &#xf…

学习python,我使用代码悄悄集齐了五福~哎嘿嘿

啊哈哈哈哈&#xff0c;我又又又来啦 这不是快春节了吗&#xff0c;支付宝等一些集五福活动又又又又一次的到来 今天呢&#xff0c;写一个啥呀我也不晓得&#xff0c;啊哈哈哈哈哈 今天写一个%90会出敬业福哦&#xff0c;啊哈哈哈哈 1.制作文字福 这个其实挺“简单”的&…

如何计算单元测试的覆盖率

一、概念 单元测试的覆盖率有&#xff1a;语句覆盖率&#xff08;即行覆盖率&#xff09;、分支覆盖率、条件覆盖率、分支条件覆盖率、路径覆盖率等。 语句覆盖率 所谓语句就是那些非分支、非判断的语句。 计算公式&#xff1a;程序执行到的语句总数 / 全部语句的总数 分支覆…

C语言程序设计易混、易错知识点(中篇)

注&#xff1a;个别题目未给ABCD&#xff0c;只需要了解知识点即可&#xff1b;另外排版可能有点乱&#xff0c;望知悉 在printf中的%作为转义符&#xff0c;两个%才相当于1个% free掉一个指针后&#xff0c;指针的值是不会自动置为NULL的&#xff0c;当然其指向的内存已经被释…

C语言从入门到放弃——字符串和内存操作函数

字符串&#xff0c;是一种由双引号引起的一整串字符&#xff0c;在C语言中&#xff0c;字符串是没有类型的&#xff0c;通常我们将字符串放在字符数组当中&#xff0c;同时&#xff0c;我们对于字符串的操作是很频繁的&#xff0c;因为对于字符串的操作频繁&#xff0c;所以C语…

为什么需要预选器?

无论是采用模拟IF处理的传统频谱仪&#xff0c;还是采用数字IF处理的现代频谱仪&#xff0c;都是扫频式架构&#xff0c;通过第一级本振(LO)的调谐实现射频的扫频测试。熟悉频谱仪架构的朋友都了解&#xff0c;在第一级混频器之前都会存在一个预选器&#xff0c;如图1所示&…

点成分享|器官芯片——小白鼠的拯救者?

在新药研发的漫长过程中&#xff0c;实验动物模型是药物从临床前试验阶段进入到临床试验阶段的金标准。实验动物模型有助于人们了解疾病的起源、病理生理特征、疾病机制、识别药物靶标、评估新药物的疗效和人体毒性以及进行药代动力学评价等。常用的实验动物模型包括小鼠、大鼠…

黑马学ElasticSearch(七)

目录&#xff1a; &#xff08;1&#xff09;RestClient查询文档-快速入门 &#xff08;2&#xff09;RestClient查询文档-match、term、range、bool查询 &#xff08;3&#xff09;RestClient查询文档-排序和分页 &#xff08;4&#xff09;RestClient查询文档-高亮显示 &…

git版本回退(git reset、git revert、git stash)

文章目录回退的两种情况1.已 commit&#xff0c;未push到远程仓库。git reset --soft &#xff08;撤销commit&#xff09;git commit --amend&#xff08;修改commit 提交的内容&#xff09;git reset --mixed&#xff08;撤销 commit 和 add 两个动作&#xff09;2.已 commit…

联合证券|左手消费,右手TMT!超270只股票新年获“买入”“推荐”

2023年开年A股商场交投继续火热&#xff0c;出资组织在活跃呼吁出资者布局的一起&#xff0c;自己又更加看好哪些标的和赛道&#xff1f; Wind数据显现&#xff0c;2023年头&#xff0c;券商关于大消费、TMT等方向装备价值更为喜爱&#xff0c;到1月10日&#xff0c;给予“买入…

LOAM、LEGO-LOAM与LIO-SAM的知识总结

文章目录LOAM、LEGO-LOAM与LIO-SAM的知识总结1.概要2.传感器信息读取3.数据的预处理4.激光雷达里程计4.1特征点提取4.2特征点关联匹配4.2.1 标签匹配4.2.2 两步LM优化4.2.3 LIO-SAM优化4.2.3.1 IMU预积分4.2.3.2 关键帧的引入4.2.3.3 因子图4.2.3.4 GPS因子4.2.3.5 回环因子5. …

代码随想录算法训练营第十五天字符串 java : 层序遍历 226.翻转二叉树 101. 对称二叉树

文章目录前言Leetcode 102 二叉树的层序遍历题目讲解Leetcode 226.翻转二叉树题目讲解Leetcode 101. 对称二叉树题目讲解递归法总结前言 递归三定律 确定参数和返回值确认终止条件确认单层递归的逻辑 Leetcode 102 二叉树的层序遍历 题目讲解 /*** Definition for a binar…

大批量数据需要导出导入时,使用mysql 快速导出和导入 csv

使用MYSQL命令行模式 导出into outfile 导入load data导出 into outfile&#xff1a;mysql> select * from cdkeyduihuan into outfile d:/cdk.csv FIELDS TERMINATED BY ,;Query OK, 1049990 rows affected (1.16 sec)d:/cdk.csv 导出数据保持的文件目录。FIELDS TERMINATE…

windows ngnix 配置https

因为客户需求&#xff0c;需要把原来的http换成https&#xff0c;还不能影像原来http的访问。 看了许多网上的资料&#xff0c;经过实践。我总结下相关步骤及怎么配置的。 第一步&#xff0c;把http换成https这里需要ssl证书 ssl证书生成&#xff0c;我接触的有2种免费方式。…

Kettle的安装以及简单使用

Kettle是一款开源免费的ETL工具&#xff0c;ETL全称 Extract - Transform - Load 意味着数据抽取&#xff0c;转换&#xff0c;装载的过程。 ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程&#xff0c;目的是将企业中的分散、零乱、标准不统一的数据整合到…

二叉树19:最大二叉树

主要是我自己刷题的一些记录过程。如果有错可以指出哦&#xff0c;大家一起进步。 转载代码随想录 原文链接&#xff1a; 代码随想录 leetcode链接&#xff1a;654. 最大二叉树 题目&#xff1a; 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地…

【ElementUI】一.axios拦截器;二.ElementUI

目录 一.axios拦截器 1.axios模块的作用&#xff1a;是对基于http请求的封装。在浏览器端对异步请求对象XMLHttpRequest进行封装 2.拦截器&#xff1a; &#xff08;1&#xff09;请求拦截器&#xff1a;对客户端发起的请求进行统一的前期处理&#xff08;token、时间戳、co…

分支与循环语句 - 练习题

目录 一、分支语句 1. 判断一个数是否为奇数 2. 输出1-100之间的奇数 法1&#xff1a;遍历1-100所有的数字&#xff0c;判断是否为奇数&#xff0c;再输出 法2&#xff1a;奇数从1开始&#xff0c;等差为2&#xff0c;所以循环2 二、循环语句 1. 计算 n的阶乘。 2. 计算…

ArcGIS基础实验操作100例--实验84查找面到直线的最近点位置

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 高级编辑篇--实验84 查找面到直线的最近点位置 目录 一、实验背景 二、实验数据 三、实验步骤 &#…