How to test an IOS Application Using Selenium with Appium

Oct 11, 2020 12:16:00 PM | by Abhilasha Singh


In case you're keen on robotizing your web application in Mobile Safari on iOS or Chrome on Android, Appium can support you. Fundamentally, you compose an ordinary WebDriver test and use Appium as the Selenium worker with an exceptional arrangement of wanted capacities.


iOS portable web computerization


Appium can mechanize the Safari program on genuine and recreated iOS gadgets. It is gotten to by setting the browserName wanted capability to "Safari" while leaving the application capacity unfilled.


You should run Safari on the gadget before endeavoring to utilize Appium, all together for the right inclinations to have been set.


At that point, utilize wanted capacities like these to run your test in versatile Safari:


  • Java
  • Python
  • Javascript
  • Ruby
  • PHP


DesiredCapabilities abilities = new DesiredCapabilities();

capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "iOS");

capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "13.2");

capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, "XCUITest");

capabilities.setCapability(MobileCapabilityType.BROWSER_NAME, "Safari");

capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "iPhone 11")


Portable Safari on Simulator


Above all else, ensure engineer mode is turned on in your Safari inclinations so the far off debugger port is open.


Versatile Safari on a Real iOS Device


For XCUITest


We use appium-ios-gadget to deal with Safari since Appium 1.15. You no longer need to introduce extra conditions.


For Instruments


For iOS 9.3 and underneath (pre-XCUITest), we utilize the SafariLauncher App application to dispatch Safari and run tests against versatile Safari. This is on the grounds that Safari is an application that is possessed by Apple, and Instruments can't dispatch it on genuine gadgets. When Safari has been dispatched by SafariLauncher, the Remote Debugger consequently interfaces utilizing the ios-webkit-investigate intermediary. When working with ios-webkit-investigate intermediary, you need to believe the machine before you can run tests against your iOS gadget.


For guidance on the best way to introduce and run ios-webkit-debugger-intermediary see iOS WebKit investigate intermediary documentation.


Arrangement for a genuine iOS gadget


Before you can run your tests against Safari on a simple gadget, you should:


XCUITest and Instruments


Turn on web reviewer on iOS gadget (settings > safari > progressed)


Just for Instruments


Have the ios-webkit-investigate intermediary introduced, running and tuning in on port 27753 (see the crossbreed docs for directions)


Ensure that SafariLauncher will work (see the SafariLauncher docs for guidelines)


Running your test


To design your test to run against safari, just set the "browserName" to be "Safari.”


  • Java
  • Python
  • PHP


/arrangement the web driver and dispatch the webview application.



desiredCapabilities = new DesiredCapabilities();

desiredCapabilities.setCapability(MobileCapabilityType.BROWSER_NAME, "Safari");

desiredCapabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, "XCUITest");

Url = new URL(" point");

AppiumDriver driver = new AppiumDriver(url, desiredCapabilities);

/Navigate to the page and collaborate with the components on the guinea-pig page utilizing id.


WebElement div = driver.findElement("i_am_an_id"));

Assert.assertEquals("I am a div", div.getText());/check the content recovered matches anticipated worth

driver.findElement("comments")).sendKeys("My remark");/populate the remarks field by id.

/close the application.


Appium underpins computerizing the Chrome program, both genuine and copied Android gadgets.




Ensure Chrome is introduced on your gadget or emulator.


Chromedriver should be introduced (a default adaptation accompanies Appium) and designed for computerizing the particular rendition of Chrome accessible on the gadget. See here for more data and insights regarding similarity.


At that point, utilize wanted capabilities like these to run your test in Chrome:

  • Java
  • Python
  • Javascript
  • Ruby
  • PHP



DesiredCapabilities capacities = new DesiredCapabilities();

capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");

capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "9.0");

capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator");

capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, "UIAutomator2");

capabilities.setCapability(MobileCapabilityType.BROWSER_NAME, "Chrome")


Note that on 4.4+ gadgets, you can likewise utilize the 'Program' browserName top to robotize the inherent program. On all gadgets, you can utInvestigating Chromedriverilize the 'Chromium' browserName top to robotize a form of Chromium that you have introduced.


Investigating Chromedriver


On the off chance that your test target requires more current Chromedriver rendition, chromedriver_autodownload highlights will help. It has been accessible since Appium 1.15.0 with the security alternative. Peruse the related documentation to figure out how to utilize it. chromedriverExecutableDir capacity likewise enables it when you require a particular Chromedriver form.


As of Chrome variant 33, an established gadget is not, at this point, required. In the event that running tests on more established adaptations of Chrome, gadgets should have been established as Chromedriver required to compose admittance to the/information/nearby catalog to set Chrome's order line contentions.


If testing on Chrome application preceding adaptation 33, guarantee adb shell has perused/compose admittance to/information/neighborhood index on the gadget:



$ adb shell su - c chmod 777/information/nearby 


There is an ideal ability showChromedriverLog, which, when set to valid, composes the Chromedriver logs inline with the Appium records. This can be useful for investigating.


The most effective method to Install and Setup Appium on Windows with First Program to Get a Kick Start on Appium:


Appium is an open-source test mechanization apparatus utilized for testing versatile applications. It permits clients to test different kinds of portable applications (for example, Native, Hybrid, and Mobile Web) using the standard WebDriver library.


There are three kinds of Mobile Apps:


Local: Native applications assembled utilizing iOS, Android, or Windows SDKs. They are stage explicit. They are working to deal with a stage as well as gadgets.


Cross-breed: Hybrid applications are web applications created utilizing HTML, CSS, and covering of a local application on the head of UIWebView for iOS and "webview" for Android Apps.


Versatile web applications: Mobile web applications are the ones of the application that got to utilizing portable programs.


Appium on an iOS gadget


Like that of Android gadgets, Appium utilizes the JSON wire convention for iOS gadgets too. Here, it uses Apple's UIAutomation API to connect with the UI components to mechanize iOS gadgets’ applications. The bootstrap.js record fills in as a TCP worker that sends the test order for following up on the iOS device with the assistance of Apple's UIAutomation API system.


What makes Appium an outright top choice?


Regarding versatile testing, whether or not the portable application is local, half breed, or universal web in nature, or the gadget stage is Android, iOS, or Windows, Appium consistently remains the best option for leading computerization testing on versatile applications. This is what makes it the most preferred universal robotization testing system:


It is a worker and runs out of sight.


It tends to be synchronized with the TestNG testing structure offering a more extensive scope of highlights.


With an in-manufactured UIAutomator, Appium is fit for creating a nitty-gritty data log and has a point by point announcing structure that makes the examination of the test outcomes better and improves the investigating.


It offers the adaptability to compose the test code in any of the various dialects (Java, JavaScript, PHP, Ruby, Python, and C#)


It also offers reusability of similar code for various gadget stages, such as iOS, Android, and Windows. This spares a ton of time and exertion that would make some way or another go into composing different test codes.


It permits you to assume full responsibility for the back-end APIs and information bases utilizing the test code. This aide in measuring any deformity that returns from the end APIs or information bases


You don't need to change or recompile the application under test in any capacity, as Appium utilizes the standard computerization APIs on all the stages. This implies you don't have to get to the source code of the under trying application.


It permits you to test the versatile applications by either utilizing emulators or test systems or genuine gadgets, giving you the adaptability to pick your testing gadget and condition.


It offers cross-stage similarity, empowering similar tests to run on different stages, enlarging the inclusion.


It offers real observing of the tests making the execution more hearty.


Appium permits equal execution of test robotization contents on various Android or iOS meetings utilizing UIAutomator, UIAutomation, or Xcode9. This rates up the testing cycle and guarantees versatility


You test the equivalent application that the clients will get to


Introduce Eclipse on Mac OS


1. Go to download a duplicate of the overshadowing. Out of the apparent multitude of recorded choices, you have to introduce Eclipse IDE for Java Developers. Snap the 64-cycle download connect as appeared in the picture underneath:


2. After tapping the 64-cycle alternative, you would be diverted to a download page where you can pick the worker closest to you so you can download quicker. Click the download button. Your download will begin naturally.


3. Once the download is finished. Go to the download organizer. You will regularly have a symbol for the Downloads envelope on the right-hand side of the dock.


You would discover a record named "obscure java-damages 2-macosx-cocoa-x86_64.tar" (the document name might be distinctive depending on the variant you download; however, it ought to be a tar record beginning with word overshadow).


4. Drag the compressed record to the work area and double-tap to open it. The document would be unfastened with default chronicle utility, and you would discover the overshadow symbol on the work area. Open Finder, select applications, and afterward drag the obscuration symbol from the work area to the locater’s application envelope. The most straightforward approach to do so is to open another window in the Finder and snap-on Applications in the rundown you jump on the left-hand side. At that point, drag the "obscure" organizer in with different applications. Ensure that you don't drag it into an envelope that is as of now inside Applications. At the end of the day, when you're set, the Applications envelope ought to have legitimately inside it an organizer named "overshadow."


5. Presently, the establishment is done; you would now be able to dispatch the obscuration by tapping the symbol in applications. Then again, you can drag the logo from applications to the dock with the goal that you can post it straightforwardly from the work area.


6. The first occasion when you dispatch the application, you would get the accompanying admonition, simply click Open.


7. The following spring up would have a message: To open shroud, you must introduce the inheritance Java SE 6 runtime. The spring-up would resemble this. Snap OK


8. Go to the connection the page would resemble the underneath screen capture. Acknowledge the License Agreement and download the record planned to Mac OS X x64. For my situation, it is jdk-7u79-macosx-x64.dmg, you may think that it's diverse depending on the java rendition you are attempting to introduce.


9. Once the download is finished, run the record and adhere to the establishment guidance.


10. When the establishment is done, open the Eclipse; it should run fine at this point.


Appium Test on Real IOS Device


1) Find UDID (Unique Device Identifier) of IOS Device:


a) Connect your IOS Device to Mac and Launch iTunes.


b) In the left sheet, go to Devices-> Select your Device. In the correct sheet, all the data identified with IOS Device will be shown.


c) Reveal the Identifier by tapping on the Serial Number.


d) Copy the identifier to your clipboard by picking Edit->Copy and Save it for some time in the future.


2) Turn on Web Inspector on IOS Device. Go to Settings - > Safari - > Advanced - > Web controller


3) Install blend (The missing bundle chief for OS X)


4) Type order in Terminal brief. (You can open the terminal by Finder. Open (Finder is accessible in the Dock.) Select Applications. At that point, picked Utilities. Double-tap on Terminal. ) Now type underneath order:


"/usr/container/ruby - e "$(curl - fsSL"


5) Install ios_webkit_debug_proxy. For getting to the web, sees on genuine iOS gadgets Appium utilizes this. To introduce the most recent labeled adaptation of the ios-webkit-troubleshoot intermediary utilizing Homebrew, run the accompanying orders in the terminal brief in given succession:


a. mix update


b. mix introduce ios-webkit-troubleshoot intermediary


6) ios_webkit_debug_proxy ought to be running and tuning in on port 27753. So subsequent to introducing you can begin the intermediary with the accompanying order in terminal:


ios_webkit_debug_proxy - c <Connected gadget UDID>:27753 - d


7) To have the option to run your tests against portable Safari we utilize the SafariLauncher App to dispatch Safari. When Safari has been dispatched the Remote Debugger consequently associates utilizing the ios-webkit-investigate intermediary. Here you ought to have a provisioning profile that can be utilized to convey the SafariLauncherApp.


Ensure you use Xcode to introduce a safari launcher application on your gadget. To do this initially download Git venture from interface.


a. Open this venture utilizing Xcode. Fabricate and run the Project. This will make an application document that will be utilized to set App Path for Appium. Allude to the article: "Appium-Run Xcode Project")


b. Ensure you have another terminal and run:


ios_webkit_debug_proxy - c <Device UDID> - d


c. Open another terminal and Type order to begin the Appium worker and introduce safari:


I. album Appium


ii. hub - U – application <safari application path>


8) Now open Appium Application and snap-on Appium Doctor demonstrated as follows. It will open a terminal and will check whether all necessary set up is done to begin robotization.


Abhilasha Singh

Written by Abhilasha Singh

    Subscribe to Email Updates

    Lists by Topic

    see all

    Posts by Topic

    See all

    Recent Posts