Appium in windows - android-activity

I am new in appium automation. When I open appium and selecting .apk file the packagename and acticity is showing as empty. Please help me to solve the issue .Running appium in windows. Appium version 1.3.4.1

In my experience, the Appactivity and apppackages aren't populated until you actually launch a session with that .apk (via inspector is the easiest way). In addition, if you just want to know those values of the app, you can check it via monitor.bat, filtering "com" in the console log, and looking for the appropriate activites

Maybe your apk file is incorrect? You may try to decompile it, using apktool.
Usage:
apktool.bat d path-to-apk-file.apk
Apktool will generate folder, open it and go to Manifest file. Look for tag named "activity" and "package". Example manifest:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.my.package.name">
<application>
<activity android:name="com.example.activity">
</activity>
</application>
</manifest>

Please check "aapt.exe" is available under SDK 'tools' or 'platform-tools' section, Appium uses "aapt dump badging apkpath" to get APK information.
If yes then set path variable.
You can also receive all information about.Apk using above command.
I hope it helps.

Please use
aapt.exe dump badging (In Windows)
./aapt dump badging (In Linux/MAC)
for getting relevant package and activity from the app.
Or better use "app" property in DesiredCapability to directly specify app's URL or absolute path.

Hello you must select the button of Application Path in first.
And make empty the fields of the application path.
And put again the path to your apk file.
Best regards.

Solution for Android
Good way to get AppPackage and AppActivity is to use the apkInfo App.
To do so
Download the apkinfo app from playstore on the same mobile on which you have installed the app under test.
Open apk info app and select the app under test from the list ( You can also search for the app).
Once you got the app, long press on the app and select "detailed information" which shows the app package and all the Activities.
I have listed all of these steps with screenshots here on my blog:

#prasanth, Please upgrade the version of your appium because newer version have this feature. try appium 1.3.7.2 and onwards. It will work.

Related

Ionic emulate android --livereload don't take the changes

i have compiled successfully in the console but i can't see changes in the emulator
eventually this entry helps:
Open android/app/src/main/AndroidManifest.xm
Add this to your AndroidManifest.xml in the tag (Tag application already exists)
"< application android:usesCleartextTraffic="true" >"
Sometimes the livereload doesn't work because of an error which exists. Then first correct the errors. Also you can try to create an empty source.ts file and save it. After this he should recompile...

MonkeyTalk-While recording not recognizing the recorded script in MonkeyTalk,is any problems with me?

We tried to Implement two types of scenarios on Monkey Talk
One is recording through Source Code and Converting Eclipse Project to Aspect J project-Its working fine.
Second scenario we tried to use the .APK file for same project we are unable to record the apk formatted set up
Clarifications needed for Below points:
Can we record .APK file setups in Monkey talk or not
As per My Observation from Web we can use .APK file but I am
Unable to Find out the Solution for my Problem.
Looking forward to assist with you if you have any concerns & Waiting or your Informative reply..
Best Regards,
Uday Reddy.S
I was able to record using .apk when the device was connected by the option Android Device(USB). You will have to wait for 10-15 secs for the record button to be enabled.
You first have to make your app source code compatible with Monkeytalk by below steps and after than you can automate it
steps are :
1)Download MonkeyTalk for gorilla logic website and unzip it.
2)Open Eclipse and convert your project on "Aspectj" (need a plugin aspectj - for eclipse)- Once it get downloaded right click on your app,configure,Convert to aspectj.
3)Then under your project folder structure search for "libs" folder if it's exist then ok else create it.
4)Once it get done go to monkeytalk,agents,android,Monkeytalkjar file. Copy it and paste it under libs folder.
5)Once it done click on "jar" file and right click on it,Aspectjtools,Add to aspectpath.
6)Then go to Androidmanifest.xml file where we have to add some permissions;
<Uses-permissions android:name="android.Permission.INTERNET/>
<Uses-permissions android:name="android.Permission.Get_TASKS/>
and save it.
7)Go to project click on it,Right click,properties,JavaBuild Path,Check the "Aspectj Runtime Library,Ok.
8)Run your application as a Android application.
9) Open monkey talk.
10) Create new project,Create new script.
11)Then set the android sdk path under prefences; MonkeyTalk,MonketTalkPrefences,Android SDK path,ok.
12) Connect to emulator on monkeytalk.
Now you will be able to record and play in MonkeyTalk.
Some start up code for your reference eg; if we have two textfield username and password and one button submit.
app.input("username").entertext("aakash");
app.input("password").entertext("jaiswal");
app.button("submit").tap();

Obfuscation in Ext Js 4.2 with Sencha CMD 3

I just installed all the required tools for the new Sencha Cmd(Ruby, Compass, Ext Js 4.2 SDK) everything works fine, but I don't know how to obtain the unique obfuscated file from the .js sources in my Ext Js application.
Any help, please? Thanks in advance.
I tried the "sencha app build" command from all the folders in my application path, always get the "Please ensure this command was executed from a valid application directory. Unable to locate 'app.dir' config property from 'sencha.cfg'
After more reading about the subject I think before the "sencha app build" command to work I need to generate the bootstrap.js file manually because my application wasn't generated using the framework, but I'm stuck here also. Anyone ever did that? Please?
The best way to get things work if your have legacy project (when project structure is not generated by sencha cmd tool) is to generate empty project and the move all necessary files/folders in to your existing project and try to adjust all configurations. You will need to move:
.sencha folder
folder with extjs development classes
bootstrap.js, bootsrap.css, build.xml
modify you start page correspondingly (index.html, index.jsp, or whatever)
create application.js to start your application
bootstrap files are always generated automatically. To generate it normally you have to use sencha app refresh command.
Basically the most important changes have to be made in .sencha folder. Most of the config files in this folder have a lot of comments so this is not a problem to understand what to change. Also it's good idea to refer official doc page: Sencha CMD

iOS Push Notification SDK for Cordova

I want to implement push notification for Cordova.
I'm following this tutorial
And also downloaded the sample project
But I am unable to find Cordova.plist/Cordova.plist and don't have knowledge to configure this.
If somebody has already worked on this, please help on this point
Any type of suggestions and advice are welcome at this stage
That appears to be a typo.
It should be in the folder of the same name as your app in your project folder.
If your app was called MyCoolApp and it was in the MyCoolAppProject folder, say... the plist file would be:
MyCoolAppProject/MyCoolApp/Cordova.plist
However, as of 2.3.0RC1, Cordova.plist has been superseded by config.xml
there are no more .plist file in cordova, add your plugin to config.xml

Location permission alert on iPhone with PhoneGap

How do you change the string on the alert saying:
(Appname/whatever it is) would like to use your current location
Of course, I only want to change the appname part. Because when you use the PhoneGap framework, the string is very ugly, something like this:
/var/mobile/Applications/157EB70D-4AA7-826E-690F0CBE0F/appname.app/www/index.html
Someone having an idea?
You need to do the geolocation after the device is ready. The following Jquery code, for example, will geolocate without that nasty alert:
$(function(){
document.addEventListener("deviceready", onDeviceReady, false);
})
function onDeviceReady() {
navigator.geolocation.getCurrentPosition(onSuccess, onError);
}
function onSuccess(position) {
// your callback here
}
function onError(error) {
// your callback here
}
On phonegap 3.0 the answer by Pius Uzamere needs to be followed AND the plugin installed.
cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation.git
otherwise you will get the double permission request.
I just followed the documentation and solved it.
Open the terminal and cd to your project and enter following command.
$ cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation.git
Also add this in your config.xml
<feature name="Geolocation">
<param name="ios-package" value="CDVLocation" />
</feature>
It will solve this issue. :)
Source: http://docs.phonegap.com/en/3.0.0/cordova_geolocation_geolocation.md.html#The%20Command-line%0AInterface
Although this question is much older, I found similar questions here and here.
For my resolution, I had to add NSLocationWhenInUseUsageDescription to the .plist file. However, I suppose since my geolocation plugin was out of date, I had to update it first. Then I had to remove/add the Cordova iOS platform. Finally, I added NSLocationWhenInUseUsageDescription to the .plist file.
First, remove/add the geolocation plugin:
cordova plugin rm org.apache.cordova.geolocation
cordova plugin add org.apache.cordova.geolocation
Second, remove/add the iOS platform:
cordova platform rm ios
cordova platform add ios
Last, add NSLocationWhenInUseUsageDescription to the .plist. Open /platforms/ios/{project}/{project}-Info.plist and add the following:
<key>NSLocationWhenInUseUsageDescription</key>
<string>[App Name] would like to access your location when running and displayed.</string>
See this iOS Developer Library link for detailed information regarding NSLocationWhenInUseUsageDescription versus NSLocationAlwaysUsageDescription versus NSLocationUsageDescription.
Finally fixed the issue.
IN the index.html just move your cordova.js up
<script src="cordova.js"></script>
as the first js file to be included (especially make sure it is above maps include js). This will make sure that the prompt shows only once.
No other codejs or ondeviceready is needed.
After looking for solution i've founded, just add a variable when you add the plugin location like this line
cordova plugin add cordova-plugin-geolocation --variable GEOLOCATION_USAGE_DESCRIPTION="your usage message"
None of the above answers worked for me. My location request was already firing on deviceready. Adding the following to config.xml fixed the issue:
<gap:plugin name="org.apache.cordova.core.geolocation" />
To solve the issue I have to run cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation.git which adds (automatically) to the config.xml the following:
<feature name="Geolocation">
<param name="ios-package" value="CDVLocation" />
</feature>
To get things working I have to put also this lines into the config.xml:
<plugins>
<plugin name="Device" value="CDVDevice" />
<plugin name="Logger" value="CDVLogger" />
<plugin name="Compass" value="CDVLocation" />
<plugin name="NetworkStatus" value="CDVConnection" />
<plugin name="Debug Console" value="CDVDebugConsole" />
<plugin name="Geolocation" value="CDVLocation" />
<plugin name="SplashScreen" value="CDVSplashScreen" />
<plugin name="Battery" value="CDVBattery" />
<plugin name="Globalization" value="CDVGlobalization" />
</plugins>
Hope it could be helpful.
After making sure my geolocation request was called after the device was ready, making sure the geolocation plugin is correctly installed and configured, I was still receiving the unsightly popup.
I resolved it by moving and referencing my cordova.js file and cordova_plugins.js files into the root directory of my application (they were originally in a subfolder), so the path to cordova.js would be:
<script src="cordova.js"></script>
I feel this should be included in the documentation (maybe it is, but I haven't managed to find it)
Just by including "cordova.js" file in your html file where you are accessing this location will resolve this issue. NOTHING FANCY REQUIRED.
1) modify Location.m in PhoneGapLib project. replace all references of
navigator.geolocation with navigator_geo
2) Copy phonegap.js to phonegap2.js and put in root of app. I have now
learned that every time I build my application and load it onto device
or simulator, the phonegap.js file is being regenerated. OK. Well I
need to modify it so lets just use another one and deal with the
hassles of upgrading in the future.
3) Modify the line (in phonegap2.js) that creates the constructor for
the navigator.geolocation on 626 to be ... if (typeof navigator._geo
== "undefined") navigator._geo = new Geolocation();
4) Now in your HTML whenever you want to use the PHONEGAP GPS stuff,
you can reference it with navigator._geo.getCurrentPosition or similar
5) Enjoy the ONE, and CLEAN, location alert permission without
revealing to your users your intelligence to use PhoneGap and build an
app with HTML/JS.
* CAVEAT AND PLEASE HELP! *
If I run the watchPosition function, I will get the first location
update with all sorts of stats. There after, It will always report an
error. I assume this sucks for this 30 second time of getting accurate
GPS on these things?
http://groups.google.com/group/phonegap/browse_thread/thread/8067c2037816a9ad
I followed all the instructions and it still failed. In the end I played around with the PhoneGap demo and found the final solution:
Move all the js files and html files into the same folder (not even sub-folder). Congratulations! Problem solved, no permission alert any more : )
BTW, You'd better use a " setTimeout(function(){utility.getGeoData();},1000);" I found "document.addEventListener("deviceready", utility.getGeoData(), false);" not work for me.
Hope that helps when you find no solution above : )
Good luck!
Since I was struggling for days now with the same problem and finally found the solution, I decided to share it with anyone who still was not able to fix it.
The solution is simple: The geolocation plugin was missing in the plugins directory within the www directory, even though I added the plugin via the phonegap command line interface AND the plugin files were in the /Plugins directory. So you only have to copy the missing files into /www/plugins and you are done. Just simple as that.
If anyone needs the missing files: http://d.pr/f/xqhq
btw: i am using cordova 3.2.0.
I hope this works for you as well!
Phoengap/Cordova version 3.5 here.
Similar to Manuel's answer above but this time the plugin does not install in the platforms/ios/[appname]/Plugins folder.
The fix for me was to just manually create a new folder for the plugin in the ../platforms/ios/[appname]/Plugins folder > then rename it to org.apache.cordova.geolocation > then copy the .h and .m files of the plugin into it.
You can find the .m and .h files for the geoLocation plugin in the [root]/plugins/org.apache.cordova.geolocation/src/ios directory.
Got this error (and a lot of others) after upgrading Cordova from 3.6 to 4.3.
I think there is some fails in the upgrade process and the only working solution for me was cordova platform rm ios then cordova platform add ios
/!\ You will lost all your ios project settings and you need to reupload splash and icons.
In my case, I am using Cordova/Ionic and have experienced the same problem. That's because of the code before device is ready. I have simply wrapped the code with document.addEventListener on "deviceready". For example:
document.addEventListener("deviceready", function () {
$cordovaGeolocation.getCurrentPosition(options).then(function(position){
...your code here...
});
});
Then the additional message does not appear.
I'm late to the party here, but will answer the question for reference.
The answer is to use the geolocation functions found in phonegap.js which is included with Phonegap. You will be able to find such instructions on the Phonegap site at http://www.phonegap.com.
If you use navigator.geolocation, you are using the default Safari geolocation system. This happens as PhoneGap works by running your pages effectively in a Safari instance. If you include phonegap.js into your site, you can use a separate geolocation method exposed by PhoneGap's Objective-C code, which will present the behaviour seen in other apps where it asks for permission from [your app name].
"Move all the js files and html files into the same folder (not even sub-folder). Congratulations! Problem solved, no permission alert any more : )" Like Caleb says works for me, well only moving the cordova.js file to the root and adding the plugin to config.xml
What is the Bundle display name of your project?
Try changing manually from the default value ${PRODUCT_NAME} and see..
That Permission to use location alert picks your bundle display name only!!