gpt4 book ai didi

android - Calabash 步骤检查应用程序是否是第一次运行

转载 作者:太空宇宙 更新时间:2023-11-03 16:43:54 25 4
gpt4 key购买 nike

看起来像葫芦pre-defined steps不足以满足我的使用需求。

我的场景是这样的:

- 如果用户第一次登录,我的应用程序会弹出一个包含 EditText 字段的 View ,要求用户输入昵称,然后用户输入姓名,例如“John”并按 OK 按钮,然后我的应用会弹出一个包含文本“Ready to go”的 View 。

- 如果用户不是第一次登录,我的应用会弹出一个 View ,其中包含文本“Ready to go”

(在我的应用程序代码中,我检查是否存在唯一标识,如果没有,则为第一次登录)

我可能是错的,但我想我需要为这种情况在 Ruby 中编写自己的步骤定义,我查看了下面的示例代码:

Then /^I see the text "([^\"]*)"$/ do |text|
macro %Q|I should see "#{text}"|

我迷路了。 我的问题是:

Q1。是否可以从 calabash 调用 Android SDK API,以便我也可以通过 ruby​​ 代码检查这是否是第一次登录?

Q2。如果上述问题的答案是否定的,如果第一次登录与非第一次登录时 View 可能不同,我如何使用葫芦来测试我的案例。 (想象一下我需要在某些设备上多次运行测试,第一次登录 View 与其余时间不同)

最佳答案

如果您正在测试一个 Android 应用程序,这个应用程序很可能会创建一个共享首选项文件。

所以你可以使用adb检查此文件是否存在和/或解析其内容。

首先通过尝试列出和检查应用程序创建的文件来手动执行此操作,以映射在什么情况下发生的某些变化可能会给您一个迹象,表明这不是第一次登录:

# listing some app's prefs
$ adb run-as com.myapp.package ls shared_prefs/

# some file contents
$ adb run-as com.myapp.package cat shared_prefs/someprefs.xml

以下示例函数运行 adb 命令以列出位于应用程序数据目录内的 shared_prefs 目录中的文件:

def list_shared_pref(your_app_package_id)
`adb -s #{ENV['ADB_DEVICE_ARG']} run-as #{your_app_package_id} ls shared_prefs/`
end

请注意,-s 修饰符是可选的,如果您同时连接多个设备,它用于选择特定的序列号,序列号应作为环境变量导出(ADB_DEVICE_ARG ).

并且您需要提供当前应用程序包 ID(类似于 com.android.camera)

假设您发现当用户执行首次登录时,应用会创建一个名为 firstLogin.xml 的共享首选项,那么您可以执行以下操作:

def is_first_login
list_shared_pref('com.yourapp.packageid').include? "firstLogin.xml"
end

您可以在 step_definitions 目录中声明的自定义步骤中调用该函数:

Given(/^I'm not in first login$/) do
unless is_first_login
# DO STUFF
else
raise "Error: Did not expected to be the first login"
end

# optional pause
sleep(STEP_PAUSE)
end

更新:

我的回答引用。 Determine if android app is the first time used

关于android - Calabash 步骤检查应用程序是否是第一次运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38499166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com