I'm currently working on a project that relies heavily on appium / selenium for automation. These frameworks are great for starting out, but the robustness isn't quite there, and requires a lot of extra hardware / software to run the automation. Such as macOS, xcode, adb, appium, selenium, usb connection or connected through WIFI ( what we currently have to use ). There is just a lot of dependencies in this automation stack, and it would be nice to have a cleaner, more reliable, and scalable solution.
So I'm wondering. Does any one know a way to run automation for iOS and Android via REST api using a server that lives directly on the device allowing us to communicate to the device like curl -POST <device_ip>:<port>/session/{sessionId}/openApp.
Think of the WebDriverAgent that Facebook built, but instead of being built with xcodebuild, that Agent just lives on the device. Essentially when you build this framework it starts up that server I'm describing, but its reliant on xcode, and i ultimately would like to remove xcode from having to be in the picture. I know that there are so many issues today I see with people having issues with both the WDA server and xcode. Specially with new versions, and how the WebDriverAgent is now archived by facebook.
Can't we just create an app that can act as the WebDriverServer running at all time, and will just use the same logic as today.. via start session, find elements by Id, click on them, and move on. This would also remove the need to running Appium on your computer, and rely on it to proxy your commands to that WDA server with iOS.
I know android is a much simpler picture, and I'm currently a little more focused on how to solve this with iOS at the moment.
I would appreciate any insight into this issue / question, and if anyone has suggestions on Appium, iOS automation, android automation, or other points that can be made please send me your feedback.
We do run our automation using real devices!
I have use Appium / Selenium to access from Rest API . In my opinion it is easier than building your own.
One of the solution was is we are currently working in a project using Flutter - that still need your Xcode to sign in the dependencies. You will also need to make sure libimobiledevice and ideviceinstaller are installed, and lastly modify Flutter. And we call the real device from rest api . We are currently scaling and monitoring the performance.
Another viable alternative which I can think of, doing it through XCTest will be easier than Appium . Just provide the end point in your app and create a wrapper in XCTest. Call the rest api and run the test in XCTest. It is more stable and faster in long run.
But for bulk of projects , I am still using Appium to test for iOS while we are evaluating this solution.
If you're open to using commercial tools, you can consider using xcuitrunner. It installs a recent version of Appium's fork of WebDriverAgent on your iOS device, launches it (and keeps it alive), and returns you a HTTP endpoint which you can use to interact directly with the WebDriverAgent.
It helps remove a couple of dependencies (such as Xcode), which may be difficult to manage. You'll still need a code signing certificate and provisiong profile from Apple, though.
I need to automate an application which consists of payment gateway which asks for card number,cvv etc..using appium.As per the requirement i need to run the script in real device and in browser stack devices.
My script is running perfectly in real devices,but not in browser stack.Can any one help me?
Have you tried executing a few tests after switching to Webview context and then performing the subsequent actions?
You can read more on the Automating Hybrid Apps in the official documentation of Appium.
You can try changing the 'browserstack.appium_version' capability in your test scripts to the different Appium versions supported on BrowserStack.
I have an app and i am trying to use the emulators using android studio. The setup is all done, and i am able to start the execution. However, after performing the login step, appium is unable to do the findelement on the objects that are present.
already tried using capability like automationName: UIautomator2 and appium
Appium logs show that the findelement is not returning anything but the objects are present and it seems to work on physical device
I'd highly recommend you download Appium Desktop. It's a bundled server and UI inspector. It should help you with your teething problems.
I work for a company who provides wifi. I have some access point setup and I would like to write some automated tests that simulate the connecting to these access points.
So my test would be something like this:
Launch Device
Go to wifi settings on device
Select wifi you wish to connect to
Verify that the device is able to successfully connect to wifi. (When testing this manually on IOS, our splash page automatically pops up, on Android I generally need to open a browser and then the splash page is displayed)
Is it be possible to use Appium to do this? If so I would really appreciate if someone could provide some more information on how to do this.
Thanks!
You need to fire ADB Command to turn your Wifi On like this
adb -s $PHONESERIAL shell "svc wifi enable"
You can include/fire such command using Appium by including it within your test case (Java Code) Use this to know how to fire ADB Commands problematically
In my blackberry application I'm establishing network connection by appending ;deviceSide=true in the url. It is working fine on simulator but its not working on device. I've correct APN settings as other third party apps are running fine.
Please let me know the possible reason for this issue!!!
Its not necessary that your app always connect via direct TCP.
For taking care all types of networks available in blackberry for your app refer this article.
How to programmatically connect to the internet in blackberry
Network Diagnostic Tool
download this network diagnostic tool developed by RIM and check weather direct TCP is working or not in your mobile.