【发布时间】:2015-11-06 01:27:56
【问题描述】:
如何使用 Appium 测试 OTP 验证。 我想通过appium做OTP验证,谁能帮帮我?
【问题讨论】:
-
到目前为止你尝试了什么?
-
您好 Raj,您的问题有解决方案吗?如果是,请在此处发布。
如何使用 Appium 测试 OTP 验证。 我想通过appium做OTP验证,谁能帮帮我?
【问题讨论】:
使用 Appium,您可以自动化和控制您的应用程序,但存在某些限制您需要了解生成 OTP 的过程。每当您进行某些交易时,OTP 都会生成并发送到您的移动设备。因此,您可以自动化执行此类事务的过程。但之后要输入收件箱中的 OTP,您需要打开收件箱,找到消息,提取 OTP,输入它。这是使用 Appium 自动化的非常复杂的过程。
我认为更好的选择是设置一个固定 OTP 编号用于测试目的,而不是实时请求 OTP。
【讨论】:
您可以在 Android 中的应用之间切换。在使用您的应用发送 OTP 时,切换到 android 默认消息应用并阅读 OTP,然后切换回您的测试应用。
driver.startActivity(AppPackageName, AppActivityName);
上面的调用可以用来在不同的app之间切换。将 AppPackageName 和 AppActivityName 分别替换为您的测试应用包名称/活动名称和 android 默认消息应用名称。
【讨论】:
您可以通过两种方式从 Appium 自动执行 OTP 验证。
要打开消息应用程序,我们需要使用以下代码打开应用程序:
driver.startActivity(AppPackageName, AppActivityName);
要从通知窗格中读取 OTP,我们可以使用以下代码打开通知窗格:
driver.openNotifications()
现在您可以检查 OTP 文本元素并阅读文本。例如,如果您的 OTP 文本是
您的一次性密码是 3357
你会得到如下的otp:
string otp = driver.findElementByXpath("//*[contains(@text,"Your OTP is")]").getText().split(" is")[1]
以上代码会将 OTP 返回到字符串变量中。现在您可以使用以下代码返回应用程序。
driver.navigate().back();
此解决方案仅适用于 Android。
【讨论】:
是的,我认为你是对的,但是,我需要在使用应用程序之前登录,并且登录页面有 OTP 验证,这就是我需要检查 OTP 的原因。 我可以构建一个没有 OTP 的应用程序进行测试,但不能每次都这样做,因为我必须测试将要发送给远用户的生产版本,并且在此版本中我无法隐藏 OTP 验证。
【讨论】:
对于 OTP 验证,您可以使用 Android Messenger。下载 android messenger apk,创建测试脚本以使用此应用启动和阅读消息。
我不知道如何为 iOS 做,任何人都可以在这里建议如何为基于 iOS 的应用程序做。
谢谢, 萨迪克
【讨论】: