UltraEdit's text editing features make editing lists and columns an intuitive experience, not the exercise in tedium it used to be. With features like multi-caret editing, column/block editing and multi-select, it's a simple text editor when you want it to be, and a multi-cursor power editor when you need it to be. An Inspector that you can use to look at your app's elements (Safari/Chrome browser, native or hybrid app), get basic information about them, and perform basic interactions with them. This is useful as a way to learn about Appium or as a way to learn about your app so you can write tests for it. Atom 1.0 was released in May 2014, as a fully fledged text editor for modern needs. In May 2016, the team behind Atom released some pretty impressive statistics. With overall, 15.9 million downloads and 1.1 million monthly users, it can be said that Atom has gained worldwide attention.
- Atom Inspector For Mac Os
- Atom Inspector For Mac Download
- Atom Inspector For Mac Download
- Atom Inspector Mac
- Atom Inspector For Mac Free
- Atom Inspector For Mac
- Atom Inspector For Mac Software
This guide will help you get started debugging your Node.js apps and scripts.
Enable Inspector
When started with the --inspect
switch, a Node.js process listens for adebugging client. By default, it will listen at host and port 127.0.0.1:9229.Each process is also assigned a unique UUID.
Inspector clients must know and specify host address, port, and UUID to connect.A full URL will look something likews://127.0.0.1:9229/0f2c936f-b1cd-4ac9-aab3-f63b0f33d55e
.
Node.js will also start listening for debugging messages if it receives aSIGUSR1
signal. (SIGUSR1
is not available on Windows.) In Node.js 7 andearlier, this activates the legacy Debugger API. In Node.js 8 and later, it willactivate the Inspector API.
Security Implications
Since the debugger has full access to the Node.js execution environment, amalicious actor able to connect to this port may be able to execute arbitrarycode on behalf of the Node.js process. It is important to understand the securityimplications of exposing the debugger port on public and private networks.
Exposing the debug port publicly is unsafe
If the debugger is bound to a public IP address, or to 0.0.0.0, any clients thatcan reach your IP address will be able to connect to the debugger without anyrestriction and will be able to run arbitrary code.
By default node --inspect
binds to 127.0.0.1. You explicitly need to provide apublic IP address or 0.0.0.0, etc., if you intend to allow external connectionsto the debugger. Doing so may expose you to a potentially significant securitythreat. We suggest you ensure appropriate firewalls and access controls in placeto prevent a security exposure.
See the section on 'Enabling remote debugging scenarios' on some advice on howto safely allow remote debugger clients to connect.
Local applications have full access to the inspector
Even if you bind the inspector port to 127.0.0.1 (the default), any applicationsrunning locally on your machine will have unrestricted access. This is by designto allow local debuggers to be able to attach conveniently.
Browsers, WebSockets and same-origin policy
Websites open in a web-browser can make WebSocket and HTTP requests under thebrowser security model. An initial HTTP connection is necessary to obtain aunique debugger session id. The same-origin-policy prevents websites from beingable to make this HTTP connection. For additional security againstDNS rebinding attacks, Node.jsverifies that the 'Host' headers for the connection eitherspecify an IP address or localhost
or localhost6
precisely.
These security policies disallow connecting to a remote debug server byspecifying the hostname. You can work-around this restriction by specifyingeither the IP address or by using ssh tunnels as described below.
Inspector Clients
Several commercial and open source tools can connect to the Node.js Inspector.Basic info on these follows:
- CLI Debugger supported by the Node.js Foundation which uses the Inspector Protocol.
- A version is bundled with Node.js and can be used with
node inspect myscript.js
. - The latest version can also be installed independently (e.g.
npm install -g node-inspect
)and used withnode-inspect myscript.js
.
Chrome DevTools 55+, Microsoft Edge
- Option 1: Open
chrome://inspect
in a Chromium-basedbrowser oredge://inspect
in Edge. Click the Configure button and ensure your target host and portare listed. - Option 2: Copy the
devtoolsFrontendUrl
from the output of/json/list
(see above) or the --inspect hint text and paste into Chrome.
Visual Studio Code 1.10+
- In the Debug panel, click the settings icon to open
.vscode/launch.json
.Select 'Node.js' for initial setup.
Visual Studio 2017
- Choose 'Debug > Start Debugging' from the menu or hit F5.
- Detailed instructions.
JetBrains WebStorm 2017.1+ and other JetBrains IDEs
- Create a new Node.js debug configuration and hit Debug.
--inspect
will be usedby default for Node.js 7+. To disable uncheckjs.debugger.node.use.inspect
inthe IDE Registry.
- Library to ease connections to Inspector Protocol endpoints.
- Start a Node.js debug configuration from the
Debug
view or hitF5
. Detailed instructions
Eclipse IDE with Eclipse Wild Web Developer extension
- From a .js file, choose 'Debug As... > Node program', or
- Create a Debug Configuration to attach debugger to running Node.js application (already started with
--inspect
).
Command-line options
The following table lists the impact of various runtime flags on debugging:
Flag | Meaning |
---|---|
--inspect |
|
--inspect=[host:port] |
|
--inspect-brk |
|
--inspect-brk=[host:port] |
|
node inspect script.js |
|
node inspect --port=xxxx script.js |
|
Enabling remote debugging scenarios
We recommend that you never have the debugger listen on a public IP address. Ifyou need to allow remote debugging connections we recommend the use of sshtunnels instead. We provide the following example for illustrative purposes only.Please understand the security risk of allowing remote access to a privilegedservice before proceeding.
Let's say you are running Node.js on a remote machine, remote.example.com, thatyou want to be able to debug. On that machine, you should start the node processwith the inspector listening only to localhost (the default).
Now, on your local machine from where you want to initiate a debug clientconnection, you can setup an ssh tunnel:
This starts a ssh tunnel session where a connection to port 9221 on your localmachine will be forwarded to port 9229 on remote.example.com. You can now attacha debugger such as Chrome DevTools or Visual Studio Code to localhost:9221,which should be able to debug as if the Node.js application was running locally.
Legacy Debugger
The legacy debugger has been deprecated as of Node.js 7.7.0. Please use--inspect
and Inspector instead.
When started with the --debug or --debug-brk switches in version 7 andearlier, Node.js listens for debugging commands defined by the discontinuedV8 Debugging Protocol on a TCP port, by default 5858
. Any debugger clientwhich speaks this protocol can connect to and debug the running process; acouple popular ones are listed below.
The V8 Debugging Protocol is no longer maintained or documented.
Start node debug script_name.js
to start your script under the builtincommand-line debugger. Your script starts in another Node.js process started withthe --debug-brk
option, and the initial Node.js process runs the _debugger.js
script and connects to your target.
Debug your Node.js app with Chrome DevTools by using an intermediary processwhich translates the Inspector Protocol used in Chromium to the V8 Debuggerprotocol used in Node.js.
Appium Desktop is a suite of apps for Mac, Windows, and Linux which gives you the power of the Appium automation server in a beautiful and flexible UI. It is a combination of a few Appium-related tools:
- A graphical interface for the Appium Server. You can set options, start/stop the server, see logs, etc... You also don't need to use Node/NPM to install Appium, as the Node runtime comes bundled with Appium Desktop.
- An Inspector that you can use to look at your app's elements (Safari/Chrome browser, native or hybrid app), get basic information about them, and perform basic interactions with them. This is useful as a way to learn about Appium or as a way to learn about your app so you can write tests for it.
Download Appium Desktop
You can always pick up the latest release of the Server GUI or the Inspector at ourRelease page onGitHub.
If you're on Windows or macOS, Appium Desktop will automatically provide youwith updated versions of the app when they are released. If you encountera problem updating, simply delete or uninstall the app and re-download thelatest from the link above.
Note that Appium Desktop is not the same thing as Appium. Appium Desktop isa graphical frontend to Appium with additional tools. Appium Desktop isreleased on its own cadence and has its own versioning system. If you arereporting an issue with Appium Desktop, always be sure to include both theversion of Appium Desktop and the version of the Appium Server which is in use(see below).
If you're on macOS, you will need to install Appium Desktop apps by copying the appfrom the downloaded DMG file to your own file system (the best place is the'Applications' folder). Running Appium from in side the attached DMG itself isnot supported, and will not work.
Known Issues
- Some Windows 10 Users experience a
PathTooLongException
when installing the EXE. The workaround for this is to update the setting on Windows to enable long paths
Usage Instructions
These instructions assume you are already familiar with Appium and Appium-related concepts. If youare new to Appium, please visit appium.io and read our introductory material.They also assume that you have downloaded both the Server GUI and the Inspector apps.
This app provides a convenient way to download and run the Appium automationserver, as well as a tool for inspecting elements in Chrome/Safari browser and your Android or iOS application. Itsvarious capabilities are described in the following sections.
The Appium Desktop Server GUI
Starting a simple server
When you open Appium Desktop, you are greeted with the server start window. Thebasic option is to start an Appium server with all its defaults and the abilityto modify the host and port. The start button will also let you know whichversion of the Appium server you are running, which can be useful whenreporting issues to the Appium team.
Starting a server with advanced options
By clicking on the 'Advanced' tab, you have the ability to set all the serverflags that are available in Appium. This is for advanced users and should onlybe modified after consulting the Appium documentation.
Server presets
If you use the advanced server options, you have the ability to savea configuration for later use. Simply save the preset on the 'Advanced' tab,and you will subsequently be able to recall and start the server with thatconfiguration from the 'Preset' tab.
The server console output window
Once you start the server, it will launch on the host and port you specified,and open a new window displaying the server log output.
This is fairly straightforward and no real interaction is possible, beyondusing the button to stop the server. You can also copy-and-paste the logs fromthis window which is useful in reporting Appium issues.
The Appium Desktop Inspector
The Inspector opens up with a New Session windows. This New Session window allows you to constructa set of Appium desired capabilities used to launch an Appium session. You can launch a sessionagainst the currently-running Appium CLI or Appium Server GUI server, or you can launch a sessionagainst a variety of other endpoints. Simply include the connection details for any server that youwish to connect to.
IMPORTANT: to ensure that the Inspector can talk to your Appium server, any Appium server youconnect to from the Inspector may need to be started with the --allow-cors
flag, so thatChrome/Electron's content security policies don't prevent the Inspector from making requests to theserver (which may be running on a different host and port). If you get immediate errors whentalking to your Appium server, ensure that this setting is configured on your server.
You can add available cloud providers as new tabs.When you select Select Cloud Providers tab on the view,Select Cloud Providers dialog appears.You can select some of them and click Done, they will appear onthe New session window as tabs.
Appium Endpoints
These are the options for launching a session against a non-local Appium server:
Endpoint | Description |
---|---|
Automatic server | Automatically utilizes the currently-running Appium server |
Custom Server | Launch a session on an Appium server running on another machine over the network |
Sauce Labs | Launch a session on the Sauce Labs cloud. Documentation |
TestObject | Launch a session on the TestObject cloud. Documentation |
Headspin | Launch a session on the Headspin cloud. Documentation |
BrowserStack | Launch a session on the Browserstack cloud. Documentation |
Bitbar | Launch a session on the Bitbar cloud. Documentation |
Kobiton | Launch a session on the Kobiton cloud. Documentation |
Perfecto | Launch a session on the Perfecto cloud. Documentation |
Pcloudy | Launch a session on the Pcloudy cloud. Documentation |
TestingBot | Launch a session on the TestingBot cloud. Documentation |
Experitest | Launch a session on the Experitest cloud. Documentation |
It should be straightforward to get set up with any of these options. Simplyenter your details in the input fields provided.
Desired Capabilities
Desired capabilities are how you configure your Appium session. They tell theAppium server what kind of platform and app you want to automate. If you areunfamiliar with the concept of desired capabilities, or which desiredcapabilities are required to launch Appium sessions of various types, youshould consult the Appium documentation. Additionally, if you're using one ofthe cloud providers, consult their documentation for possible vendor-specificdetails.
Appium Desktop does not restrict your creation of desired capabilities in anyway, nor will it validate them for you. It simply provides a nice UI forentering them in, and saving them for later use. Under the 'DesiredCapabilities' tab, you can use the form fields and '+' button to enter as manydesired capabilities as you need. You will also see a representation of theresulting JSON, which is what is actually sent to the Appium server. This canbe useful for verifying your capabilities, or for copy-and-pasting whenreporting issues.
Once you have set your desired capabilities, you might wish to save them so youcan run the same type of session later. Simply click the 'Save As...' button togive your capability set a name. You can then access it under the 'SavedCapability Sets' tab, for later editing or session launching.
Once your server type and capabilities are set, click 'Start Session' to launchthe Appium Desktop Inspector.
Attach to an Existing Session
If you click on the 'Attach to Session...' tab, you can select an existingsession from a list of currently running sessions on your selected server, or youcan input a session ID of a currently-running session. That session should berunning on the server details you specified in the server type section above.Attaching to an existing session is possible because the Inspector is just anAppium client. This could be useful if you want to debug the middle of a runningtest. When you quit the Inspector window of an existing session, Appium Desktopwill not quit the session as it does normally.
The Inspector
The Inspector is a visual representation of the state of your application alongwith the ability to perform certain interactions in your application throughAppium.
Appium sessions can take some time to load, especially on cloud services, soplease be patient. When the session loads, a screenshot of your app will appearon the left. You can mouse over various UI elements in your application, andsee them highlighted.
In the middle of the Inspector window is your app's hierarchy, represented asXML. You can navigate this tree by clicking through it, or by clicking onelements in the screenshot view. They will then be highlighted.
When an element is highlighted, its information will appear in the detail viewon the right side of the Inspector. This detail view consists of potentialactions to take against the element, and a table of the element's properties.These properties are valuable in determining how the element might accessedusing a particular Appium locator strategy. With an element selected, you canalso 'Tap' the element, or 'Send Keys' to the element (if it is a text field).
When you take such an action with an element, the Inspector will send thecommand to Appium, which will execute it. If the action is successful, a newscreenshot will be generated and you should see the updated state and XML ofyour app. If it's not successful, you'll have an opportunity to see the errormessage.
The top of the Inspector window contains a small toolbar with iconsrepresenting the ability to take certain actions in the Inspector:
- Back (call
driver.back
) - Refresh (refresh the source and screenshot)
- Start Recording (open the recorder, see the next section for more information on the recorder)
- Quit the session (call
driver.quit
and close the Inspector)
The inspector for Hybrid or Web apps
Appium Desktop can also inspect the Webview of your Hybrid app or inspect elements in the Chrome of Safari browser.It will automatically determine for Android or iOS if a webview is detected and will notify you about this in the right part of the screen.
A select box of all found contexts will be shown and after selecting a context the source will be updated and show the source.The below screenshot shows the HTML source of the Appium Desktop documentation website
.
As of Appium Desktop version 1.18.0
it will automatically enable showing the HTML-source if a Chrome or Safari session is started.
More selector options
XML is not a native programming language for iOS as it is with Android. Appium will automatically translate the iOS-UIHierarchy into XML, but this is a time-consuming process.The XML will be used to provide a XPATH that can be used to find elements. When you use that XPATH selector with iOS during automation, Appium always needs to do the translation which will slow down the test execution (for more info see Appium Pro newsletter 8).
As of Appium Desktop version 1.18.0
it will, if possible, also provide the:
selector options together with a Get Timing button.
.
When you select an iOS element in Appium Desktop and press the Get Timing-button it will provide you the time in millisecondsit will take per selector to find the element and will automatically sort them from fast to the slowest.In most cases you will see that XPATH is the slowest locator strategy in comparison to the other options.
Atom Inspector For Mac Os
.
The Recorder
Appium Desktop comes with a very basic action recorder, that watches foractions taken using Appium Desktop and displays language-and-framework-specificcode that represents those actions. The code can then be copied-and-pasted intothe appropriate Appium client code and used for tests.
NB: the goal of the Recorder is not to produce production-ready test code.It is designed as a tool to help explore the Appium API, and demonstrate howcertain automation behaviors correspond to method calls in a particularlanguage and Appium library. In sum, it is a learning tool, not a robust codegeneration feature, and should be used as such.
When you start recording, the Inspector will show an additional window:
At first, the Recorder will show no code. You will first have to take someaction, like finding an element in the hierarchy and tapping on it, or sendingkeystrokes to it. When you do this, code will appear in the recorder window,corresponding to the particular language and framework you have chosen (whichcan be adjusted in the drop-down menu at the top right of the Recorder):
This code can be copied to your clipboard using the appropriate button at thetop right of the Recorder pane. Note that by default what is shown are simplylines of code corresponding to the specific actions you have taken whilerecording---in general you cannot paste these lines into an empty text file andrun the code. To run Appium test scripts in code requires that variousdependencies (like the Appium client libraries) be installed, and that scriptboilerplate (like instantiating a driver and initializing a session) bepresent. To show this additional code, you can click the 'Show Boilerplate'button. With boilerplate code shown, it is possible to copy and paste the codeinto a new file and run it.
The power of the Recorder will continue to grow as we add more languages,frameworks, and actions to Appium Desktop.
Conclusion
This is everything you need to know to use Appium Desktop successfully!Remember, Appium Desktop is not a replacement for understanding Appiumitself---it is simply a convenient tool for working with Appium on yourdesktop, and an Inspector for exploring your app. Have fun!
Reporting Issues and Requesting Features
Appium Desktop is open source, and we use GitHub for issue tracking. Pleasesimply report issues at our issuetracker. We will endeavor todetermine whether the issue you are reporting is related to Appium Desktop orAppium Server. If it's not related to Appium Desktop specifically, we willclose the issue and ask you to open a general Appium issue at Appium's mainissue tracker. Please, saveyourselves and us valuable time by getting clear on whether the issue you'reexperiencing is related to Appium Desktop specifically or instead is a generalAppium issue. You can do this by seeing whether the issue reproduces with theAppium command line server as well. If it does, direct your report to Appium'sissue tracker.
Have a feature request? Follow the same process and submit an issue to theappropriate tracker! (Either here in this repo if the request is specificallyfor Appium Desktop, or Appium's main tracker if the request is for Appium moregenerally.)
Advanced Topics and Troubleshooting
Connect to local Appium server
Atom Inspector For Mac Download
Appium Desktop has own Appium CLI. You can launch it via Starting a simple server.But sometimes you need another Appium version which is bundled in the desktop.For example, when you want to use Appium beta.
Then, please follow below steps.
Atom Inspector For Mac Download
- Build Appium CLI environment: Getting Started
- e.g.,
$ npm install -g appium@1.14.0
- e.g.,
- Launch the Appium
$ appium
- Launch Appium Desktop and open The New Session window
- Connect to the running Appium server as
Custom Server
as below (by default)- Remote Host:
localhost
- Remote Port:
4723
- Remote Path:
/wd/hub
- Remote Host:
- Start session
Appium can't detect environment variables on Mac
Atom Inspector Mac
Appium uses environment variables like ANDROID_HOME
as well as relying onvarious binaries in your PATH
and so on. When running from the command linein an environment where you have set these variables appropriately, Appium hasno problem in picking them up. However, Appium Desktop does not run in a shellor a command-line environment, and so by default it does not have access toenvironment variables you have set in your shell startup script or profile. Towork around this, we use theshell-env package to pick upenvironment variables defined in your shell. This package only looks in certaincommon init scripts, however, like ~/.bashrc
, ~/.bash_profile
, and~/.zshrc
. If you set your Appium environment variables in some other way, youwill need to create one of these default init scripts and set your environmentvariables there as well, so that Appium Desktop will successfully pick them up.
Atom Inspector For Mac Free
Warnings about being on a read-only file system
Atom Inspector For Mac
This probably means you tried to launch Appium Desktop from the downloaded diskimage (.dmg
file). This is not a supported mode of running Appium Desktop. Tocorrectly install Appium Desktop, copy the application from the disk image toyour local filesystem, to somewhere like /Applications
. Then, run the appfrom that new location.
Cannot open Appium Desktop
It is because of macOS security system.Please read issue#1217 for more details.
Atom Inspector For Mac Software
Developer Instructions
Want to hack on Appium Desktop? Awesome! Head on over to our ContributingDoc for information on how to get a dev environment set upand submit changes back to the project.