美文网首页菜鸟
2.Python+uiautomator2登录考研帮

2.Python+uiautomator2登录考研帮

作者: starrymusic | 来源:发表于2019-04-05 22:46 被阅读223次

    环境配置可以参考:https://github.com/openatx/uiautomator2

    1.启动夜神模拟器

    不要开启各种安全卫士,不然夜神模拟器会莫名其妙的卡在99%处。将夜神模拟器改成手机版,一般默认是平板。


    2.在cmd下输入:adb devices查看已连接设备。

    正常情况下,会有如下输出,如果没有,测试下adb有没有加入到环境变量,在cmd里输入adb,或者adb version,是否报错。


    3.在cmd下输入:python -m weditor

    它会自动在浏览器打开一个窗口


    Weditor旁边默认是Android,如果不是,改回Android,往右填写的是ip地址和端口号,如果是模拟器,就填写第二步adb devices输出的那个地址和端口。点一下连接,如连接成功,旁边会显示稻穗。灰色框里会出现夜神的界面。如果灰色框内手机界面是黑屏,可以在模拟器里打开强制渲染,然后reload下Weditor;如果还不行,重启夜神模拟器;如果还不行,执行下图框内动作。关于黑屏的以上不分先后,可循环多次执行。在渲染开启后如果黑屏消失,可以关了渲染。(下图来自:github)

    4.pycharm进场

    首先看下是否连接:



    有信息输出,说明连接成功了。

    5.获取app名称


    上图右侧这些键值对都可以使用,这里先使用最简单的位置信息,将下面的位置代码复制一下并执行也可以使用xpath(d.xpath("//android.widget.TextView[@text='考研帮']").click())
    import uiautomator2 as u2
    d = u2.connect('127.0.0.1:62001')
    d.click(0.482, 0.532)
    print(d.info)
    

    将会看到考研帮APP已经启动了



    在weditor里reload一下,让两者同步




    然后定位下“跳过”的键值对,备用。

    现在代码进行到跳过这一步了,代码如下:

    import uiautomator2 as u2
    d = u2.connect('127.0.0.1:62001')
    d.click(0.482, 0.532)
    d(resourceId="com.tal.kaoyan:id/tv_skip").click()
    

    在模拟器里将应用的数据清除下就可以执行上面的代码了



    6.执行登录

    和上面类似,定位用户名,密码,登录按钮,执行代码就好。在执行之前先清理下应用数据,或者在代码里面加判断。
    代码如下:

    # -*- coding: utf-8 -*-
    # @AuThor  : frank_lee
    import uiautomator2 as u2
    d = u2.connect('127.0.0.1:62001')
    # d.click(0.482, 0.532)
    d.xpath("//android.widget.TextView[@text='考研帮']").click()
    d(resourceId="com.tal.kaoyan:id/tv_skip").click()
    d(resourceId="com.tal.kaoyan:id/login_email_edittext").send_keys("starrymusic")
    d(resourceId="com.tal.kaoyan:id/login_password_edittext").send_keys("我是密码")
    d(resourceId="com.tal.kaoyan:id/login_login_btn").click()
    


    对于这种跳出的对我们无用的信息,我们需要跳过或叉掉,叉掉前需要加以判断,有没有出现这些元素,如果没出现而执行了该动作势必会报错。
    类比上述步骤,可以使用代码执行登录,并滑动“休闲空间”某个神奇的板块
    代码如下:

    # -*- coding: utf-8 -*-
    # @AuThor  : frank_lee
    import uiautomator2 as u2
    import time
    # 连接模拟器
    d = u2.connect('127.0.0.1:62001')
    # 打开考研帮
    try:
        if d.xpath("//android.widget.TextView[@text='考研帮']").wait(3):
            d.xpath("//android.widget.TextView[@text='考研帮']").click()
            time.sleep(2)
    except:
        pass
    # 点击跳过页面
    try:
        if d(resourceId="com.tal.kaoyan:id/tv_skip").wait(3):
            d(resourceId="com.tal.kaoyan:id/tv_skip").click()
    except:
        pass
    try:
        # 实现登录
        if d(resourceId="com.tal.kaoyan:id/login_email_edittext").wait(2):
            d(resourceId="com.tal.kaoyan:id/login_email_edittext").send_keys("starrymusic")
            d(resourceId="com.tal.kaoyan:id/login_password_edittext").send_keys("我是密码")
            time.sleep(1)
            d(resourceId="com.tal.kaoyan:id/login_login_btn").click()
            time.sleep(2)
    except:
        pass
    try:
        # 下线通知
        if d(resourceId="com.tal.kaoyan:id/tip_commit").wait(3):
            d(resourceId="com.tal.kaoyan:id/tip_commit").click()
            time.sleep(2)
        # 发现新版本
        if d(resourceId="com.tal.kaoyan:id/view_wemedia_cacel").wait(3):
            d(resourceId="com.tal.kaoyan:id/view_wemedia_cacel").click()
            time.sleep(2)
        # 隐私条款
        if d(resourceId="com.tal.kaoyan:id/tv_agree").wait(3):
            d(resourceId="com.tal.kaoyan:id/tv_agree").click()
            time.sleep(3)
        # 下线通知
        if d(resourceId="com.tal.kaoyan:id/tip_commit").wait(3):
            d(resourceId="com.tal.kaoyan:id/tip_commit").click()
            time.sleep(2)
    except:
        pass
    try:
        # 点击下面社区板块
        if d(resourceId="com.tal.kaoyan:id/mainactivity_button_forum").wait(3):
            d(resourceId="com.tal.kaoyan:id/mainactivity_button_forum").click()
            time.sleep(0.5)
            d(resourceId="com.tal.kaoyan:id/mainactivity_button_forum").click()
            time.sleep(1)
            # 上面为什么执行两次,规避弹出页
            # 点击更多板块
        if d(resourceId="com.tal.kaoyan:id/mainactivity_button_forum").wait(3):
            d(resourceId="com.tal.kaoyan:id/hotthread_recommend_moreforum").click()
            time.sleep(1)
        # 点击休闲空间
        if d(resourceId="com.tal.kaoyan:id/more_forum_title", text=u"休闲空间").wait(3):
            d(resourceId="com.tal.kaoyan:id/more_forum_title", text=u"休闲空间").click()
            time.sleep(2)
            d(scrollable=True).scroll.to(text="玫瑰初相遇")
        # 点击'玫瑰初相遇'板块
        if d.xpath("//android.widget.TextView[@text='玫瑰初相遇']").wait(3):
            d.xpath("//android.widget.TextView[@text='玫瑰初相遇']").click()
            time.sleep(3)
            # 执行滑动动作,滑动20次
            i = 0
            while i < 10:
                d(scrollable=True).scroll.toEnd(steps=50)
                time.sleep(2)
                d(scrollable=True).scroll.toEnd(steps=50)
                time.sleep(2)
                i += 1
    except:
        pass
    

    相关文章

      网友评论

        本文标题:2.Python+uiautomator2登录考研帮

        本文链接:https://www.haomeiwen.com/subject/llxliqtx.html