python3 uiautomator2 (二) 、操作app

一、启动app

1、连接手机
2、启动 python -m weditor
3、以抖音为例,手机打开抖音

image.png

4、current: 获取当前包名和activity

控制台输入: uiautomator2 current

{
    "package": "com.ss.android.ugc.aweme",
    "activity": "com.ss.android.ugc.aweme.search.activity.SearchResultActivity"
}

5、通过包名打开抖音app

import uiautomator2 as u2
d = u2.connect('c6e989d7')
d.app_start("com.ss.android.ugc.aweme") # 启动抖音APP
d.app_stop("com.ss.android.ugc.aweme")  #停止应用

二、打开一个干净的抖音app

如果我们想打开一个干净的app,可以使用app_clear 先清除app数据再打开

import uiautomator2 as u2
d = u2.connect('c6e989d7')
d.app_clear('com.ss.android.ugc.aweme')
d.app_start("com.ss.android.ugc.aweme") # 启动抖音APP
print(d.info)

三、定位

1、resourceId定位
image.png
import uiautomator2 as u2
d = u2.connect('c6e989d7')
d.app_start("com.ss.android.ugc.aweme") # 启动抖音APP
d(resourceId="com.ss.android.ugc.aweme:id/foj").click() #点击搜索按钮
2、className定位
image.png
import uiautomator2 as u2
d = u2.connect('c6e989d7')
try:
    d.app_stop("com.ss.android.ugc.aweme")
except:
    pass
d.app_start("com.ss.android.ugc.aweme") # 启动抖音APP
d(className="android.widget.Button").click() #点击搜索按钮
3、description 定位
import uiautomator2 as u2
d = u2.connect('c6e989d7')
try:
    d.app_stop("com.ss.android.ugc.aweme")
except:
    pass
d.app_start("com.ss.android.ugc.aweme") # 启动抖音APP
d(description="搜索").click() #点击搜索按钮
4、xpath定位
import uiautomator2 as u2
d = u2.connect('c6e989d7')
try:
    d.app_stop("com.ss.android.ugc.aweme")
except:
    pass
d.app_start("com.ss.android.ugc.aweme") # 启动抖音APP
d.xpath('//*[@resource-id="com.ss.android.ugc.aweme:id/foj"]').click() #点击搜索按钮
5、text定位
import uiautomator2 as u2
d = u2.connect('c6e989d7')
try:
    d.app_stop("com.ss.android.ugc.aweme")
except:
    pass
d.app_start("com.ss.android.ugc.aweme") 
d(resourceId="com.ss.android.ugc.aweme:id/foj").click()  # 点击搜索按钮
d(text="搜索").click()  #text定位
三、复杂一点的定位
1、通过父元素定位子元素
image.png

如上图,如果我们要定位图中2的元素时,再上几层级都有相同的元素,我们就可通过父级元素进行定位子级元素

import time
import uiautomator2 as u2
d = u2.connect('c6e989d7')
try:
    d.app_stop("com.ss.android.ugc.aweme")
except:
    pass
d.press('home') #先返回首页
d.app_start("com.ss.android.ugc.aweme") # 启动APP

d(resourceId="com.ss.android.ugc.aweme:id/foj").click()
d.set_fastinput_ime(True) #切换输入法
d.send_keys('mangguo520')

print("点击搜索栏目")
d(resourceId="com.ss.android.ugc.aweme:id/lyj").click()

print("点击用户搜索")
d(text="用户").click()
time.sleep(3)
re = d(resourceId="com.ss.android.ugc.aweme:id/a0b").child(className="android.widget.FrameLayout")
print("re",re)
2、多个元素中,查找其中一个
image.png
查找一个android.widget.FrameLayout


re = d(className="androidx.recyclerview.widget.RecyclerView").child(className="android.widget.FrameLayout")[0].get_text()

或者

re = d(className="androidx.recyclerview.widget.RecyclerView").child(className="android.widget.FrameLayout").get_text()

不选择下标默认定位第一个元素

取第二个元素:

re = d(className="androidx.recyclerview.widget.RecyclerView").child(className="android.widget.FrameLayout")[1].get_text()
3、child_by_text 定位子元素
image.png
import time
import uiautomator2 as u2
d = u2.connect('c6e989d7')
try:
    d.app_stop("com.ss.android.ugc.aweme")
except:
    pass
d.app_start("com.ss.android.ugc.aweme") # 启动APP
d(resourceId="com.ss.android.ugc.aweme:id/foj").click()
d.send_keys('mangguo520')
d(resourceId="com.ss.android.ugc.aweme:id/lyj").click()
d(text="用户").click()
time.sleep(3)
re = d(resourceId="com.ss.android.ugc.aweme:id/a0b").child_by_text('mangguo520',className="com.lynx.tasm.behavior.ui.text.FlattenUIText")  #定位抖音号为xxx的元素

print("re",re)
4、child_by_description
import time
import uiautomator2 as u2
d = u2.connect('c6e989d7')
try:
    d.app_stop("com.ss.android.ugc.aweme")
except:
    pass
d.app_start("com.ss.android.ugc.aweme") # 启动APP
d(resourceId="com.ss.android.ugc.aweme:id/foj").click()
d.send_keys('mangguo520')
d(resourceId="com.ss.android.ugc.aweme:id/lyj").click()
d(text="用户").click()
time.sleep(3)
re = d(resourceId="com.ss.android.ugc.aweme:id/a0b").child_by_description('mangguo520',className="com.lynx.tasm.behavior.ui.text.FlattenUIText")

print("re",re.get_text())
5、 siblings

通过兄弟定位

image.png

如图想关注某个抖音号为 aaaa,的用户,可现通过定位抖音号,再去查找它的兄弟“关注”按钮

import time
import uiautomator2 as u2
d = u2.connect('c6e989d7')
try:
    d.app_stop("com.ss.android.ugc.aweme")
except:
    pass
d.app_start("com.ss.android.ugc.aweme") # 启动APP
d(resourceId="com.ss.android.ugc.aweme:id/foj").click()
d.send_keys('mangguo520')
d(resourceId="com.ss.android.ugc.aweme:id/lyj").click()
d(text="用户").click()
time.sleep(3)
re = d(text="mangguo520").sibling(text="关注",className="com.lynx.tasm.behavior.ui.view.UIView").click()

你可能感兴趣的:(python3 uiautomator2 (二) 、操作app)