I have been doing Android Automation for an app using Appium. Everyday a new build comes of the app and I have to check the code for new fixes using Automation. The problem I am facing is that in a current new build of the app the resource id's of all the buttons and fields that I need to access in automation has become same. I could use Xpaths to access certain elements but using Xpath's will make automation slow.
I use UIAutomatorViewer to get Xpath's and resource id's.
Can somebody help me in determining if the same resource id issue that I am facing is at the Android end or if my UIAutomator is not working correctly and showing same id's?
For security purposes I cannot share the screenshot.
Using Xpath is not recommended. The reason is that the infrastructure used to generate the XPath, doesn't guarantee that the XPath will remain the same between two different executions.
The only solution i see to your problem is to ask developer to add unique automation id for each element. You can ask them to put unique cont-desc in their code. Then you will be able to access element using findByAccessibilityId.
MobileElement element = driver.findElementByAccessibilityId("SomeAccessibilityID");
I ask my devs to always put ids of all the items in the screen for automation purpose. Also check with devs if in some case they are not able to do so then xpath can be used in some cases.
Related
I have a new Forge App and it works for retrieving OAuth token for the one configured site (local, currently). Their documentation says that you can configure multiple callbacks for an app, but I only saw room for the one, and there were no examples. Can I just list them all separated by semicolons, or other punctuation?
When I did this exact same thing with configuring a Procore App, they had a text box and it was clear and easy to enter multiple callback locations. Forge, not so much.
Thanks in advance!
I have not experimented with trying to add multiple callbacks on one line because those environments are not ready yet for testing (but I would prefer to know the correct technique before proceeding!)
I have been building out a Zapier app for my company and all has been going well and I am pretty much finished except for one thing I can't figure out which I am hoping someone can help me with.
Using Zapier Salesforce App as an example that is similar to what I am trying to achieve). Imagine I am trying to update a contact. If I do this is Zapier SFDC app it pulls in all the possible fields on that record which can be completely different due to custom fields.
I am essentially trying to mimic this for updating users in our system but cannot pull in the fields that are available to update for that specific user. I am guessing you use the 'Dynamic Field' feature maybe but I just don't see how it can work which may be down to a lack of something on our end.
Anybody run through this sort of experience before that could offer any inisghts? Thanks!
Yes, you need to implement dynamic custom fields in your app. Here is the documentation: https://zapier.github.io/zapier-platform/#customdynamic-fields
This question already has answers here:
Can I get console logs from my iPhone app testers?
(2 answers)
Closed 3 years ago.
I am looking for a way to programatically pull all of my application logs that are shown in console.
.
I DO NOT WANT to just be able to see them, so using xcode as a preview will not work for me.
What I want is my users to be able to send me those logs along with feedback any time since app is in beta phase and plain user explanations are not good enough for proper debugging at my end.
So, what I DO WANT is some iOS analogy for Android's logcat command which is being used somehow like this:
final Process process = Runtime.getRuntime().exec("logcat -d");
final InputStream inputStream = process.getInputStream();
... then you manipulate the stream into whatever you need to do with it, in my case, to create a String object that i would pass on to my log service.
SO FAR in my investigation I was only being able to find this option, but I would appreciate if something easier to integrate into Swift app is available.
Also, os.log module is used for logging, but I wasn't able to find an option where it allows loading the logs. Or my understanding of the following explanation found HERE is not good enough:
Use the Console app or the log command-line tool to view and filter log messages.
EDIT:
END USER SHOULD NOT INTERRACT WITH LOGS in any way other than just clicking the submit button while switch for debug logs is ON.
So #matt NO - this is not the duplicate of the linked issue.
End users should NOT have to download something else too in order to be able to feed me with my own app logs.
That is a classic killer of user experience and should not even be approved as a solver on the linked post either.
To your last point. That explanation is telling you to connect your phone to a mac and use the "Console" application (or command line tool) to extract the console logs e.g. https://support.apple.com/en-ie/guide/console/welcome/mac
The first link you have provided (using ASL) is the only solution I'm aware of to do this natively. 2 other options would be:
Use a server/cloud based analytical/event tracking system to log messages for each user. If someone sends an issue you can search the logs to see what happened. (Be careful about storing personal information though).
You could write your own class / function that takes in a string, and writes it to a text file and logs it to the console. During development you will see it in the console and in the wild it will store it. When you want the details, you could just read the text file and upload it. Need to be careful of it growing too big. And again depending on where its stored, personal data could be an issue.
I've always used option 1. There are many free services to do this and lots of solutions for releasing apps to test users provide this out of the box too. Microsofts AppCenter being one, and I believe is free unless you want CI/CD
I currently work at a school and have an idea to create an app that allows students to contact a grown up (for example, the principle) anonymously through an app. The app would quite simply consist of a contact form. I am trying to find out the best, and easiest way to achieve this without setting up servers with a separate API. Does anyone have a suggestion on how to achieve it? Is there any way to set up an e-mail form with a pre set recipient and a built in sender-account? Please guide me in the right direction.
You would need to implement an SMTP client. You can use open source code like skpsmtpmessage
It's likely that their example app could be your solution.
Your biggest problem will be the deployment. You definitely need to pay an $99/y developer account and add all the students device ID's to your account (with a maximum of 100 devices/y) or register all of them as beta tester (I don't know the limitations).
Probably this isn't doable so easily, as it seems you don't have iOS developing experience so far. Maybe you can find something on the app store that works with self hosted databases. But you definitely need to host some kind of webApp/API.
You may want to give Appygram a try to handle the back-end if you are able to set up the contact form itself. While it's a separate hosted API, at least you don't have to build/manage it.
Appygram is a free web service that would allow you to configure all the details such as which adults could be contacted, their point(s) of contact (i.e. email address), and it would process and send all the submissions for you. All your app needs to do is send a form post request.
A nice thing about having this information outside of the iOS app itself is that you can change the contact details on the fly without requiring an update to the iOS app itself. Whether you use Appygram (which, since I contribute to it, I am slightly biased toward!) or something similar, I would say that since this is for students, I would recommend a solution that would allow you to update your configuration without requiring app updates.
Finally, I'd second what Julian said. The challenge here could be with deployment. One possible alternative would be to make this a mobile-friendly web page accessible only via student login or on the school network (or both). Would probably be easier development-wise and wouldn't require installs nor the hurdles that Julian described with device registration, etc. And, Appygram would still work with this setup as well.
Good luck!
I have an app developed for Android and iOS; both have their own JIRA projects.
I'd like to be able to create single user stories in Greenhopper and assign them to both projects, without cloning/linking like I do today.
Is there a way to do this, or a recommended approach?
I think if you better define your end-goal, such as "If a user story incorporates iOS, it should show up in X dashboard and Y filter" or "users should be able to access X filter of related issues from story details view", you may get more concrete answers.
Maybe you have a user Story from an Android user who can't see his profile picture, so you create it in the Android project. After gathering feedback, you find out they originally uploaded an unsupported file type from his friend's iPhone. At this point, you could create an iOS issue, or story, and link it to the original Android story (you mentioned that's not optimal though), or you could add the new iOS information to the original Android ticket.
If you define the complications that these methods would create, it would be easier to offer workarounds for your specific problems. It is possible using JQL (the Jira query language) to return results from multiple projects in a single filter, and that particular filter can be reported on. You can also use labels or a custom field to report on issues across projects, and then use those JQL (filter) queries in Greenhopper/Jira Agile.
https://confluence.atlassian.com/display/AGILE/Configuring+Filters