Forum Discussion
- HKosovaSmartBear Alumni (Retired)
I would recommend against the image-based approach, because it may be unreliable.
The recommended way to start an app is to add its .apk to TestedApps and use:
TestedApps.appname.Run()
If the app is pre-installed and you don't contol it (Calculator for example), you can run it using the "am start" shell command. You need to know the application's package name + activity name, or the intent action.
// JScript
Mobile.SetCurrent("MyDevice");
// Run Calculator Mobile.Device.ShellExecute("am start -n com.android.calculator2/.Calculator");
// Run Calendar Mobile.Device.ShellExecute("am start -n com.android.calendar/.AllInOneActivity");
// Open Settings Mobile.Device.ShellExecute("am start -n com.android.settings/.Settings");
// Run Camera Mobile.Device.ShellExecute("am start -a android.media.action.IMAGE_CAPTURE")To find the application's activity name for use with "am start", run the app on the device, then select the device in the Object Browser and view the RunningTaskInfo.TopActivity property. The activity syntax is PackageName/ShortClassName. For example:
PackageName = com.android.calculator2
ShortClassName = .Calculator
=>
com.android.calculator2/.Calculator
For more information about the "am start" command, see Using activity manager (am) in Android developer documentation.- TanyaYatskovskaSmartBear Alumni (Retired)
Thanks for your solution, Helen. It’s a very interesting approach!
chopper_elation, you can choose between two solutions or suggest your own :)
- anhvuFrequent Contributor
Here is my script
function openAppwithADBShell(device,package,activity)
{
var status = true;
var msg = "";
//Check Device
if(Mobile["Device"](device)["Exists"])
{
Mobile["Device"](device)["ShellExecute"]("adb shell am start "+ package +"/"+ activity);
//Delay
Delay(10000)
}
else
{
status = false;
msg = Log["Error"]("openAppwithADBShell: "+"Failed!"+"The device: "+device+" is not existed!")
}
return(new Array("openAppwithADBShell",status,msg));
}You should download the System Android Information app to know what is the package and activity of your app.
For example:
//Package: com.apple.android.music
//Activity: com.apple.android.music.onboarding.activities.SplashActivityThe activity is the one contain the MAIN function.
- TanyaYatskovskaSmartBear Alumni (Retired)
Hi Chopper_elation,
You can do the following:
- You need to add the images of your app icon and the menu icon to TestComplete’s Image Repository. TestComplete will search for objects based on these images and touch them on the screen. Please read the Image-Based Testing Principles ( http://smartbear.com/viewarticle/75229/ ) article for details.
- To swipe the menu window, you can call the Swipe method of the AndroidDevice object. So your test may look like this (this is a sample app that is looking for the GPSTest application on Sony):
function Test() { var nameAndroidDevice = "*"; var AndroidDevice = Mobile.Device(nameAndroidDevice); Mobile.SetCurrent(nameAndroidDevice); var SonyLaunchApp = ImageRepository.SonyLaunchApp; // find the menu icon and touch it SonyLaunchApp.MenuButton.Touch(); // swipe the window until the needed app is found AndroidDevice.Swipe(700, 200, 100, 600, 1); var GPSTestButton = SonyLaunchApp.GPSTest; if (GPSTestButton.Exists()) // the app was found GPSTestButton.Touch(); AndroidDevice.Swipe(700, 200, 100, 600, 1); if (GPSTestButton.Exists()) GPSTestButton.Touch(); }
Related Content
- 2 years ago
- 2 years ago
- 4 years ago
Recent Discussions
- 3 days ago
- 3 days ago
- 7 days ago