在Android上使用Appium阅读短信

kpbpu008  于 2023-02-02  发布在  Android
关注(0)|答案(3)|浏览(234)

我试图自动化的流程,我可以阅读短信,然后解析短信阅读OTP,并将其输入到另一个网络应用程序。看了所有论坛,但找不到答案。
我正在用java编写代码,并试图使用appium在android设备上运行一个webapp。
有人能建议怎么做吗?

mwg9r5ms

mwg9r5ms1#

如果你想在Appium会话中从设备读取短信,discuss.appium.io中描述了一个很好的方法
我认为您可以在一个测试中创建多个会话:1 -通过本机应用程序获取短信,2 -在移动的浏览器中打开webApp,然后执行任何您需要的操作

kulphzqa

kulphzqa2#

这种方法对我很有效
假设您的动态口令短信是像“动态口令是12345为您的订单”,它显示在您的通知面板,
1.进入OTP屏幕
1.下拉通知栏((AndroidDriver) driver).openNotifications();
1.等待otpElement元素,xpath //android.widget.TextView[contains(@text,'OTP is')]显示(即,当短信到达时)
1.使用OTPmessage = otpElement.getText()获取OTP消息文本
1.使用此代码提取OTP:String OTP = StringUtils.substringBetween(OTPmessage, "OTP is ", " for ");
1.使用((AndroidDriver) driver).pressKey(new KeyEvent(AndroidKey.BACK));关闭通知面板
我不认为这是一个很好的方法,如果你正在测试的应用程序。它可能需要很多时间的OTP到达,从而不必要地失败您的测试。最好让您的开发人员保持OTP固定,这样你就不需要每次通过短信接收它。

carvr3hs

carvr3hs3#

您可以添加一个密钥来存储最后一个OTP在一个内存中的存储,如Redis或关闭的字典在您的后端语言,然后您将更新此密钥的值,你想通过一个短信服务提供商发送出去的OTP。最后发送的OTP存储在此密钥,然后应该通过一个额外的API端点在您的服务中公开。然后,在执行发送OTP的操作后,您可以将其作为自动脚本的一部分调用。
一个更可靠和强大的修改将是公开一个API,检索存储在每个电话号码的OTP,你必须有这个存储当然之前,你可以在应用程序中进行验证。这个端点必须只在测试环境中公开,这是要注意的预防措施,或者你使端点只对授权用户角色可用。

相关问题