UIAutomator2 一个简单的练手demo,自动刷东方头条

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("XXXXXXX")
# print("输入账号")
# d(text=u"请输入密码").set_text("XXXXXXXX")
# print("输入密码")
# time.sleep(1)
# d.press("back")
# time.sleep(2)
# d(text=u"点击领取红包").click()

在这里插入图片描述

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Javademo是指用Java语言编写的小型项目,旨在提高编程技能和应用知识。它常常用于新熟悉语言特性、学习编程思想以及实践学习过程中的难点。下面给出一个简单的Javademo示例。 假设我们需要编写一个学生成绩管理系统的demo。我们可以定义一个Student类,包含学生的姓名和成绩属性;再定义一个StudentManager类,用于对学生成绩进行管理。 在Student类中,我们可以提供构造方法和访问器方法(getter和setter)来设置和获取学生的姓名和成绩。例如: ```java public class Student { private String name; private int score; public Student(String name, int score) { this.name = name; this.score = score; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } } ``` 在StudentManager类中,我们可以定义一个存储学生对象的列表,并提供添加学生、删除学生、根据姓名查询学生和计算平均成绩等方法。例如: ```java import java.util.ArrayList; import java.util.List; public class StudentManager { private List<Student> students; public StudentManager() { students = new ArrayList<>(); } public void addStudent(Student student) { students.add(student); } public void removeStudent(Student student) { students.remove(student); } public Student findStudentByName(String name) { for (Student student : students) { if (student.getName().equals(name)) { return student; } } return null; } public double calculateAverageScore() { int sum = 0; for (Student student : students) { sum += student.getScore(); } return (double)sum / students.size(); } } ``` 通过上述的Student和StudentManager类,我们可以在主程序中创建一个StudentManager对象,然后调用其方法来管理学生成绩。例如: ```java public class Main { public static void main(String[] args) { StudentManager manager = new StudentManager(); Student student1 = new Student("张三", 80); Student student2 = new Student("李四", 90); manager.addStudent(student1); manager.addStudent(student2); System.out.println("平均成绩:" + manager.calculateAverageScore()); } } ``` 以上就是一个简单的Javademo示例,它可以帮助我们巩固Java语言的基础知识和编程技能,提高我们的编码能力。通过编写和实践这样的小型项目,我们可以更好地理解和应用Java的各种特性和功能。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值