UIAutomator2 一个简单的练手demo,自动刷东方头条
兼容不是很好,还有情况没有写
import uiautomator2 as u2
import time
n = 0
#连接设备
# if u2.connect_usb():
# print("已连接USB设备")
# d=u2.connect_usb()
d=u2.connect_wifi("192.168.2.237")
# elif u2.connect_wifi("192.168.1.105"):
# print("连接WiFi设备")
# d=u2.connect_wifi("192.168.1.105")
# else:
# print("未能连接设备")
print(d.info)
#获取窗口大小
print("分辨率是:"+ str(d.window_size()))
'''解锁'''
def screen_on():
d.screen_on()
d.unlock()
d.swipe(0.5, 0.9, 0.5, 0.6, 0.05)
time.sleep(1)
d.swipe_points([(0.228, 0.525),(0.005, 0.525),(0.766, 0.525),(0.5, 0.677),(0.228, 0.828),(0.497, 0.828),(0.761, 0.828)],0.05)
screen_info=d.info.get("screenOn")
if screen_info==False:
screen_on()
else:
print("无需解锁")
'''启动app'''
def star_app(pkg):
d.toast.show("正在启动app")
d.app_start(pkg)
time.sleep(2)
star_app("com.songheng.eastnews")
'''登录'''
def login():
d(resourceId="com.songheng.eastnews:id/y6").click_exists(timeout=15)
d(resourceId="com.songheng.eastnews:id/la").click_exists(timeout=15)
d(resourceId="com.songheng.eastnews:id/a8l").click_exists(timeout=15)
#判断是否需要登录
if d(text=u"未登录"):
d(text=u"未登录").click_exists(timeout=15)
d(text=u"点击登录").click_exists(timeout=15)
d(text=u"账号密码登录").click_exists(timeout=15)
d(className="android.widget.EditText").clear_text()
d(className="android.widget.EditText").click()
d.shell("input text 15021501530")
d(resourceId="yzm", text=u"xxxx", className="android.widget.EditText").set_text("xxxx") #用户名和密码填写自己的
time.sleep(1)
d(text=u"点击领取红包", className="android.view.View").click()
d(resourceId="com.songheng.eastnews:id/a8l", className="android.widget.ImageView").click_gone(1,2)
d(resourceId="com.songheng.eastnews:id/fi").click_exists(timeout=10)
elif d(resourceId="com.songheng.eastnews:id/afo"):
print ("已经登录,无需登录")
'''获取用户名'''
def get_username(username,password):
d(className="android.widget.EditText").clear_text()
d(text=u"请输入手机号")
d(text=u"请输入手机号").set_text(username)
d(text=u"请输入密码").set_text(password)
d.press("back")
time.sleep(2)
'''阅读新闻'''
def read_news():
while True:
d(scrollable=True).scroll(steps=35)
# d(resourceId="com.songheng.eastnews:id/vf", text=u"取 消", className="android.widget.Button").click_gone(1,1)
time.sleep(0.5)
if d(text=u"展开全文"):
time.sleep(1)
if d(text=u"展开全文"):
d(text=u"展开全文").click()
# d(resourceId="com.songheng.eastnews:id/vf", text=u"取 消", className="android.widget.Button").click_gone(1,1)
else:
d(scrollable=True).scroll(steps=35)
# d(resourceId="com.songheng.eastnews:id/vf", text=u"取 消", className="android.widget.Button").click_gone(1,1)
d(text=u"展开全文").click()
# else:
# if d(text=u"猜你喜欢 ", className="android.view.View"):
# d(scrollable=True).scroll(steps=35)
# d.press("back")
# n+=1
# # print("第{}次浏览新闻".format(n))
# get_news()
# time.sleep(1)
while True:
d(scrollable=True).scroll(steps=35)
if d(text=u"猜你喜欢 ", className="android.view.View"):
d(scrollable=True).scroll(steps=35)
d.press("back")
break
get_news()
elif d(resourceId="wrapper", className="android.view.View"):
d(scrollable=True).scroll(steps=50)
d(scrollable=True).scroll(steps=50)
d.press("back")
break
get_news()
elif d(text=u"百度一下"):
d.press("back")
break
get_news()
'''点击新闻'''
def click_news(n):
n+=1
# d(resourceId="com.songheng.eastnews:id/vf", text=u"取 消", className="android.widget.Button").click_gone(1,1)
d(resourceId="com.songheng.eastnews:id/gk").click_gone(1,2)
d(resourceId="com.songheng.eastnews:id/mc").click_gone(1,2)
code= d(resourceId="com.songheng.eastnews:id/o0").get_text()
print(n,"开始阅读:"+ code)
d(resourceId="com.songheng.eastnews:id/o0").click()
return n
'''获取新闻'''
def get_news():
# d(resourceId="com.songheng.eastnews:id/l2").click_exists(timeout=30)
while True:
d.swipe(0.4, 0.3, 0.4, 0.9, 0.3)
# if d(resourceId="com.songheng.eastnews:id/gk"):
# time.sleep(1)
# click_news()
# read_news()
if d(text="下拉刷新"):
time.sleep(1)
click_news(n)
read_news()
elif d(text="松开立即刷新"):
time.sleep(1)
click_news(n)
read_news()
elif d(text="刷新中"):
time.sleep(1)
click_news(n)
read_news()
login()
get_news()
# d(text=u"账号密码登录").click()
# d(className="android.widget.EditText").clear_text()
# d(text=u"请输入手机号")
# d(text=u"请输入手机号").set_text("15021501530")
# print("输入账号")
# d(text=u"请输入密码").set_text("happyforever1")
# print("输入密码")
# time.sleep(1)
# d.press("back")
# time.sleep(2)
# d(text=u"点击领取红包").click()