我试图自动化的流程,我可以阅读短信,然后解析短信阅读OTP,并将其输入到另一个网络应用程序。看了所有论坛,但找不到答案。我正在用java编写代码,并试图使用appium在android设备上运行一个webapp。有人能建议怎么做吗?
mwg9r5ms1#
如果你想在Appium会话中从设备读取短信,discuss.appium.io中描述了一个很好的方法我认为您可以在一个测试中创建多个会话:1 -通过本机应用程序获取短信,2 -在移动的浏览器中打开webApp,然后执行任何您需要的操作
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固定,这样你就不需要每次通过短信接收它。
((AndroidDriver) driver).openNotifications();
otpElement
//android.widget.TextView[contains(@text,'OTP is')]
OTPmessage = otpElement.getText()
String OTP = StringUtils.substringBetween(OTPmessage, "OTP is ", " for ");
((AndroidDriver) driver).pressKey(new KeyEvent(AndroidKey.BACK));
carvr3hs3#
您可以添加一个密钥来存储最后一个OTP在一个内存中的存储,如Redis或关闭的字典在您的后端语言,然后您将更新此密钥的值,你想通过一个短信服务提供商发送出去的OTP。最后发送的OTP存储在此密钥,然后应该通过一个额外的API端点在您的服务中公开。然后,在执行发送OTP的操作后,您可以将其作为自动脚本的一部分调用。一个更可靠和强大的修改将是公开一个API,检索存储在每个电话号码的OTP,你必须有这个存储当然之前,你可以在应用程序中进行验证。这个端点必须只在测试环境中公开,这是要注意的预防措施,或者你使端点只对授权用户角色可用。
3条答案
按热度按时间mwg9r5ms1#
如果你想在Appium会话中从设备读取短信,discuss.appium.io中描述了一个很好的方法
我认为您可以在一个测试中创建多个会话:1 -通过本机应用程序获取短信,2 -在移动的浏览器中打开webApp,然后执行任何您需要的操作
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固定,这样你就不需要每次通过短信接收它。
carvr3hs3#
您可以添加一个密钥来存储最后一个OTP在一个内存中的存储,如Redis或关闭的字典在您的后端语言,然后您将更新此密钥的值,你想通过一个短信服务提供商发送出去的OTP。最后发送的OTP存储在此密钥,然后应该通过一个额外的API端点在您的服务中公开。然后,在执行发送OTP的操作后,您可以将其作为自动脚本的一部分调用。
一个更可靠和强大的修改将是公开一个API,检索存储在每个电话号码的OTP,你必须有这个存储当然之前,你可以在应用程序中进行验证。这个端点必须只在测试环境中公开,这是要注意的预防措施,或者你使端点只对授权用户角色可用。