【问题标题】:Reading SMS using Appium on Android在 Android 上使用 Appium 读取短信
【发布时间】:2021-02-10 20:54:59
【问题描述】:

我正在尝试自动化一个流程,我可以在其中读取短信,然后解析短信以读取 OTP 并将其输入另一个 web 应用程序。浏览了所有论坛,但找不到答案。

我正在用 java 编写代码并尝试使用 appium 在 android 设备上运行 webapp。

有人可以建议怎么做吗?

【问题讨论】:

  • 通常在测试环境中,我们需要绕过OTP特性。那将是一个更好的选择。有时获取 OTP 可能会延迟,这会导致自动化测试用例不一致。

标签: android appium appium-android


【解决方案1】:

如果您想在 Appium 会话中从设备读取短信,discuss.appium.io 中描述了一个很好的方法

我认为您可以在一次测试中创建多个会话:1 - 使用本机应用程序获取短信,2 - 在移动浏览器中打开 webApp 并执行您需要的任何操作

【讨论】:

    【解决方案2】:

    这种方法对我有用

    假设您的 OTP 短信类似于“您的订单的 OTP 是 12345”,并且它显示在您的通知面板中,

    1. 到达 OTP 屏幕
    2. 下拉通知栏((AndroidDriver) driver).openNotifications();
    3. 等待此元素 otpElement 与 xpath //android.widget.TextView[contains(@text,'OTP is')] 显示(即,当短信到达时)
    4. 使用OTPmessage = otpElement.getText() 获取 OTP 消息文本
    5. 使用此代码提取 OTP:String OTP = StringUtils.substringBetween(OTPmessage, "OTP is ", " for ");
    6. 使用((AndroidDriver) driver).pressKey(new KeyEvent(AndroidKey.BACK));关闭通知面板

    如果您正在测试应用程序,我认为这不是一个好方法。 OTP 可能需要很长时间才能到达,从而不必要地使您的测试失败。最好让您的开发人员保持 OTP 不变,这样您就不需要每次都通过短信接收它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-28
      • 1970-01-01
      • 2015-06-06
      相关资源
      最近更新 更多