Android系统-解决App自动化测试时,App注册/登录时获取验证码-超简单(真机)

App自动化 解决App自动化获取手机接收的验证码

环境和工具:win10 + python3.7 + appium 1.17.1 + 安卓手机,要插手机卡,收验证码。

我的方法是 App中点击获取验证码,手机(华为mate9)收到验证码后,验证码会显示在手机通知栏里面,下拉手机通知栏,在通知栏里定位短信,获取短信内容,截取验证码。这是思路,保姆级教程,废话较多。下面是具体的操作。有几个小细节。。

1.App点击获取验证码之前,下拉一下手机任务栏,点击任务栏清空按钮,为了保证App中点击获取验证后 通知栏只有收到的一条验证码短信的通知消息,所以这个清空按钮要保证存在(其他手机没试过,应该都有清空这个功能,找到清空按钮id,正常做点击操作就行),如果你非要跟我杠,说清空了任务栏后,获取验证码后,正好同时也来了一条其他短信,获取的短信不是App的怎么办。我能咋办,这么巧的事情,你看谁发来的,给他拉黑名单吧。。。。下次应该就不会出现了,不过这种情况这个我暂时也没遇到过,手机通知栏多条短信的id是一样的,应该可以按照下标取倒数第一条,我也没看收到不同发信人在通知栏短信的排序方式,应该是倒叙的。测试机手机号,,就不要处理什么业务用,安心收验证码就行

点击'获取验证码'按钮之前先清空一下任务栏’

2.然后App中点击获取验证码,设置等待15s,等短信,如果15s短信没到,那就设置等待20s ,看情况延长等短信时间,这个方法确实有点儿傻,不知道有没有好办法。(self.driver.implicitly_wait(15)这个隐式等待我觉得不靠谱,经常不行,还是用 time.sleep(15)靠谱,不差那几秒),短信到了,执行下拉操作,获取任务栏短信id,定位到短信。(‘android:id/text’ 是通知栏短信的id,不要点击,获取短信内容text就行了)。
idd = self.driver.find_element_by_id(‘android:id/text’)

获取短信内容

duanxinneirong = idd.text

通过短信的id定位到短信,获取短信内容text
获取到短信内容了,验证码短信内容都是固定的吧,除了验证码不一样,自己选择一种方式,把验证码截取出来就行了,这是我的,验证码是四位数
yanzhengma = duanxinneirong[10:14]

然后定位到验证码输入框,把验证码 send_keys 就OK 了

获取到验证码后,使用上划操作把通知栏收回,不要点清空按钮,这样能保证下次执行代码的时候清空按钮存在。如果有其他好办法,告诉我一声哈。
~~
更新:
如果下拉任务栏后没有 清空 按钮那就把点击清除按钮这个操作 try一下 ,然后except里面写手动执行的上划操作
~~

yanzhengma = getverificationcode.test_getverificationcodePM(self) # 调用获取验证码方法, 这些操作写到另外一个文件里了。

不清楚的或者有好的办法 记得留言哈~~
报错,但是不影响运行

    # 下拉状态栏 清空一次
    xx = self.driver.get_window_size()['width']
    yy = self.driver.get_window_size()['height']
    yy2 = 1
    print(xx, yy)
    # 0.93  0.99  屏幕右下角的位置开始
    xx1 = xx * 0.93
    yy3 = yy * 0.99
    self.driver.swipe(xx1, yy2, xx1, yy3)
    time.sleep(1)
    self.driver.find_element_by_id('com.android.systemui:id/delete').click()  # 点击清空通知信息 按钮可能不存在,没有的话程序就报错了
    self.driver.find_element_by_android_uiautomator('new UiSelector().text("获取验证码")').click()
    time.sleep(15)
    self.driver.swipe(xx1, yy2, xx1, yy3)  # 等了15秒后下拉通知栏定位短信位置
    time.sleep(1)
    idd = self.driver.find_element_by_id('android:id/text')
    duanxinneirong = idd.text   # 获取短信内容
    print('短信内容是:' + duanxinneirong)
    # 拿到短信内容了,把状态栏再拉回去  点击位置自己根据手机获取 
    self.driver.swipe(xx1, yy3, xx1, yy2)
    # 截验证码
    yanzhengma = duanxinneirong[10:14]
    print('短信验证码是:' + yanzhengma)
    return yanzhengma
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
安卓期末大作业-商城app-androidstudio开发(含注册登录数据库) 在安卓期末大作业中,我选择了开发一个商城app,并使用Android Studio进行开发,其中包括注册登录和数据库功能。首先,我设计了一个用户友好的界面,包括商城的首页、商品详情、购物车和个人中心等页面。在注册功能上,我使用了Android Studio的相关组件和代码,实现了用户注册并将信息存储到数据库中。用户可以输入用户名、密码等信息进行注册,并且密码会进行加密处理,保障用户信息的安全性。 在登录功能上,我设计了一个登录界面,用户可以输入已注册的用户名和密码进行登录登录成功后,用户可以浏览商城的商品,将喜欢的商品加入购物车,并在个人中心查看自己的订单等信息。同,为了提高用户体验,我还设计了用户退出登录的功能,保障用户的账号安全。 在数据库的设计上,我使用了SQLite数据库来存储用户的注册信息、商品信息、订单信息等数据。通过SQL语句对数据库进行增删改查操作,保证了app的数据管理和存储功能。 整个开发过程中,我充分发挥了Android Studio的优势,利用其丰富的组件和功能,实现了商城app的开发。在开发过程中,我遇到了一些问题,但通过查阅资料和不断的实践,最终都得到了解决。通过这次大作业的开发,我对安卓开发有了更深入的了解,掌握了开发商城app的基本流程和技术,提高了自己的编程能力和实际操作能力。希望能够在以后的学习和工作中,能够继续加深对安卓开发的认识,做出更多更优秀的app

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值