技术标签: uiaotuomator # python自动化 appium weditor # appium 自动化
https://blog.csdn.net/weixin_45912307/article/details/122392478
1. 获取操作系统版本
2. 获取设备名称
aapt.exe
目录下aapt dump badging apk
安装路径(如C:\Users\用户名称\Downloads\Android_8.8.55.6900_537105254_32.apk
)方式2:
adb logcat |findstr -i Displayed
5. 设置appium server启动参数
# 1. 从appium库里导入driver对象
from appium import webdriver
# 2. server启动参数
desired_caps = dict()
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '5.1.1'
desired_caps['deviceName'] = 'emulator-5554'
desired_caps['appPackage'] = 'com.tencent.mobileqq'
desired_caps['appActivity'] = 'com.tencent.mobileqq.activity.SplashActivity'
# 3. 声明driver对象
driver = webdriver.Remote('http://127.0.0.1:5554/wd/hub', desired_caps)
1. 安装工具
pip install -U uiautomator2 | 安装第三方库
python -m uiautomator2 init | 初始化uiautomator2
pip install -U weditor | 安装定位工具
weditor --help | 检查是否安装成功
weditor | 启动定位工具(网页版)
2. 工具使用
{
"platformName": "Android",
"platformVersion": "5.1.1",
"deviceName": "emulator-5554",
"appPackage": "com.tencent.mobileqq",
"appActivity": "com.tencent.mobileqq.activity.SplashActivity",
"noRest": true
}
el1 = driver.find_element_by_id("com.tencent.mobileqq:id/btn_login")
el1.click()
el2 = driver.find_element_by_accessibility_id("请输入QQ号码或手机或邮箱")
el2.clear()
el2.send_keys("qq号码")
el3 = driver.find_element_by_accessibility_id("密码 安全")
el3.clear()
el3.send_keys("自己的qq密码")
el4 = driver.find_element_by_id("com.tencent.mobileqq:id/pqz")
el4.click()
el5 = driver.find_element_by_accessibility_id("登 录")
el5.click()
# 1. 从appium库里导入driver对象
import time
from appium import webdriver
# 2. server启动参数
def qq_login():
desired_caps = {
"platformName": "Android",
"platformVersion": "5.1.1",
"deviceName": "emulator-5554",
"appPackage": "com.tencent.mobileqq",
"appActivity": "com.tencent.mobileqq.activity.SplashActivity",
"noRest": True
}
# 3. 声明driver对象
driver = webdriver.Remote('http://127.0.0.1:5554/wd/hub', desired_caps)
# 隐式等待10s元素出现
driver.implicitly_wait(10)
el1 = driver.find_element_by_id("com.tencent.mobileqq:id/btn_login")
el1.click()
el2 = driver.find_element_by_accessibility_id("请输入QQ号码或手机或邮箱")
el2.clear()
el2.send_keys("49xxxxx00")
el3 = driver.find_element_by_accessibility_id("密码 安全")
el3.clear()
el3.send_keys("自己qq密码")
el4 = driver.find_element_by_id("com.tencent.mobileqq:id/pqz")
el4.click()
el5 = driver.find_element_by_accessibility_id("登 录")
el5.click()
time.sleep(5)
driver.quit()
if __name__ == '__main__':
qq_login()
id | driver.find_element_by_id(id_value)
ANDROID_UIAUTOMATO | Rnew UiSelector().方法名称(值).方法名称(值).方法名称(值)
xpath | driver.find_element_by_xpath(xpath_value)
description content-desc | driver.find_element_by_accessibility_id('view-text')
className | driver.find_element_by_class_name(class_value)
坐标 | os.system('adb shell tap x y')
模糊定位 | contains(@key,value)
# 1. 从appium库里导入driver对象
import time
from appium import webdriver
# 2. server启动参数
def denglu():
desired_caps = dict()
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '5.1.1'
desired_caps['deviceName'] = 'emulator-5554'
desired_caps['appPackage'] = 'com.tencent.mobileqq'
desired_caps['appActivity'] = 'com.tencent.mobileqq.activity.SplashActivity'
desired_caps['noRest'] = True
# 3. 声明driver对象
driver = webdriver.Remote('http://127.0.0.1:5554/wd/hub', desired_caps)
driver.implicitly_wait(10)
# 4. 点击登录
driver.find_element_by_id("com.tencent.mobileqq:id/btn_login").click()
# 5. 输入用户名
user_name = driver.find_element_by_xpath('//*[@content-desc="请输入QQ号码或手机或邮箱"]')
# 清除输入框
user_name.clear()
user_name.send_keys('492224xxxx')
# 6. 输入密码
user_pwd = driver.find_element_by_id('com.tencent.mobileqq:id/password')
# user_pwd = driver.find_element_by_xpath('//*[@resource-id="com.tencent.mobileqq:id/password"]')
# 清除输入框
user_pwd.clear()
user_pwd.send_keys('xxxxx')
# 7.勾选同意协议
driver.find_element_by_xpath('//*[@resource-id="com.tencent.mobileqq:id/pqz"]').click()
# 8.点击登录
driver.find_element_by_xpath('//*[@resource-id="com.tencent.mobileqq:id/login"]').click()
# 退出或关闭驱动
time.sleep(15)
driver.quit()
文章浏览阅读726次。---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------一、图像列表控件1、ImageList控件的属性1> 定义图像列表控件是含有图像对象的集合,可以通过索引或关键字引用该集合中的每个对象。ImageList控件不能独立使用,只用来为Windows窗体中的其他控件提供图像2_黑马listview
文章浏览阅读459次。一个简单的轮播为了更具有通用和参考性,轮播组件中,轮播只使用了react,没有添加其他的状态管理,或者参数类型限制的库. 所以这个轮播的方法,同样可以用于vue 等其他框架github地址最终效果显示无限循环原理如图所示,如果轮播里面有三个部分,那么可以在首端前添加一个跟最后一块一样的dom节点,同理在最末端添加跟首端相同的节点,这样当轮播到末端,在下一张的情况下,就可以无缝..._react carousel不暂停
文章浏览阅读2.7k次。微信小程序开发工具无法输入中文参考: https://www.cnblogs.com/xyyt/p/10005947.html异常描述操作系统工具版本类型Window10微信web开发者工具1.02.1902010bug官方回应处理方法经验证, ctrl(command) + shfit + w 重启下项目,是可行的,看来也只有如此了。期待下个..._vant输入框输入中文报无效参数
文章浏览阅读331次。汽车信息管理,员工可在汽车信息管理页面查看汽车名称、汽车类型、汽车品牌、图片、能源类型、颜色、排量、价格、咨询电话、详细地址、上架日期等内容,还可进行新增、修改、查看评论或删除等操作,如图5-11所示。_基于django的汽车俱乐部管理系统设计与实现
文章浏览阅读2.9k次。整理一下调起微信支付的流程:Adapay成功发起支付请求 -> 将请求成功中的 pay_info 返回给前端-> 前端使用 pay_info 调用微信支付Payment.php:发起支付的方法config.php:配置文件,引入参数文件(根据你自己的参数文件调整路径)_php接入adapay
文章浏览阅读112次。1,最近项目中用到了一个功能,一个很好的功能。就是用户在搜索的时候,搜索结果出来后对你输入的关键字进行红色标记。这样用户就很请楚的看到自己输入什么后会出现什么样子的结果。还有一个功能是,现在有一段文字了,但是要对其中的某些字符串进行着色处理,这个时候NSAttibutedString起到了非常大的作用。以下是我写好的一段代码,各位可以拿去用,非常方便的处理好。#imp..._ios 开发给代码关键词上色
文章浏览阅读1.2k次。展示异步任务状态当有一个Future(异步)任务需要展示给用户时,可以使用FutureBuilder控件来完成,比如向服务器发送数据成功时显示成功提示:var _future = Future.delayed(Duration(seconds: 3), () { return '老孟,一个有态度的程序员'; });FutureBuilder( future: _future, builder: (context, snapshot) { ._flutter snapshot
文章浏览阅读19次。后端由Spring Boot提供支持,前端由Vue.js构建,数据存储和管理通过MySQL和Navicat实现,整个开发流程由Maven进行管理,并在Tomcat服务器上运行。开发工具:idea/eclipse/myeclipse。环境配置软件: JDK1.8+Maven3.3.9。数据库管理工具:Navicat10以上版本。操作系统:win7以上,最好是win10。文末可领取本课题的JAVA源码参考。数据库:mysql5.7或8.0。服务器:Tomcat7.0。
文章浏览阅读3.4k次。1.0 概述本文旨在向读者介绍电脑围棋领域的状况及 Internet 上的相关资源。 为照顾尚不熟悉围棋的读者,第2部分介绍了围棋的基本常识和规则,熟悉这些的读者可以跳过它,或在必要时参考。 第6部分将告诉读者,由于各自的特点,目前围棋程序的水平与国际象棋程序相比差距极大,有待于进一步投入力量开发;第3部分 给出了其理论和实践的依据,并指出围棋程序是不可能仿照国际象棋程序那样开发的(参见表一)。 _电脑围棋
文章浏览阅读1.4k次,点赞3次,收藏6次。(一)查看并运行下列程序并回答问题。package case1;import java.io.*;public class IOExample { public static void main(String[] args) throws IOException { // 一行一行读入数据 BufferedReader in = new BufferedReader(new FileReader("IOExample.java")); ._输入与输出实验
文章浏览阅读8.7k次。但是如果将项目打包成一个jar包后,再获取map.properties是获取不到的,对于操作系统来说最多只能读取到jar包,而不能再继续读取jar包里面的文件了,如果继续读取,只能交给jvm去读了,此时能读取到二进制流,而不能获取到路径。可通过以下几种方式获取classpath下的资源。如果是使用idea进行本地开发时,是可以获取到classpath下的资源的路径的,因为是读取的磁盘上的真正的那个文件。maven项目resources目录也是会被编译到classpath下的。..._classpathresource找不到文件
文章浏览阅读1k次。互联网时代,每个想要进入IT行业的人都或多或少地考虑过去IT教育培训机构学习。现在,很多IT教育培训机构在宣传的时候,都称短期学习就可以帮助大家月薪过万。而看到这样的宣传,很多人都动心了。但还有不少人产生了质疑,短期学习真的就能让自己月薪过万吗?其实,大家在浏览一些IT教育机构的宣传网站的时候应该也可以注意到,IT培训课程分多个专业,不同专业的学习时间不同,最后就业时的真实工资也不同。目前多数I..._外面培训学校学几个月it毕业就一万多一个月真的假的