Appium Inspector Slowness / Hanging in Appium 1.3.1

Hey Guys -

First of all, thank-you for the new Appium version 1.3.1! I am very excited to be using it!
Secondly, I am starting a brand new project, which involves refactoring & improving an existing app. My first step is to get integration tests set up using Appium. I launched the app using the appium inspector & it seems very sluggish, not to mention that most command I issue do not seem to update the app. The app just refreshes to the existing page.

I was just curious if there are any known issues with Appium Inspector in 1.3.1. I feel like it used to work much better over the summer. I imagine that this could very well be issues w/ UIAutomation. Just curious to get any information that might help me out.

On a related note, any tips or tricks to interrogate the view hierarchies outside of the inspector, using Appium commands, directly?

Thanks for the feedback and continued effort - it is all appreciated!

Funny - I hit send on this post, and now some of the commands are going through in the inspector, just fine. What I do notice is that when I select UI elements in the GUI, window, the red highlight outlines do not draw in the right place. Often times, they are outside of the app area, when they should be in the same place as they UI element.

Thoughts? Thanks

1 Like

I am definitely seeing hang-ups. Some commands go through fine, but others cause long hanging.
Anyone else having these issues?

I believe the slowness that I observed was due to the send_keys issues, which I have opened this other ticket for :

Same issue with me.Works fine on previous appium version.

1 Like

I noticed that if you resize the Appium UI, the placement of the highlights can be wrong. They’re good till you move it, but found that you have to “Refresh” at least once after resizing UI and then they’ll be good. And regarding sendKeys…we switched to using a click and then a setValue:


    target.click();
    target.setValue("value");

Speeds up the tests too. At first it was fun watching the machine type, but quickly you’ve gotten over the thrill and you just want the text in there. I’m sure there are valid cases where sendKeys is precisely what you want for a particular testing reason, but give the other a try if you like. Might work better for you.

Ok - I haven’t had any luck w/ setValue, but I wasn’t using the click.
I will try that now - thanks!

Other things I would humbly recommend.

  1. Learn about xpath predicates. Very powerful way to specifically query for element or set of elements.
  2. if you haven’t messed around with the locator in the UI, it is an invaluable tool for building valid path expressions
  3. if you want to use sendKeys, add this capability:
    capabilities.setCapability(“interKeyDelay”, 0);
  4. use driver.getPageSource() to examine how Appium/Selenium see your app
  5. build a library of small programmatic pieces that interact with your application, then build your tests using them
  6. once you’re familiar enough with the structure of the app, and you don’t need the UI, just run Appium server from command line, and pass the app in the capabilities from your test code.

Appium command line:

/Applications/Appium.app/Contents/Resources/node/bin/node /Applications/Appium.app/Contents/Resources/node_modules/appium/lib/server/main.js -a 0.0.0.0 -p 4723 --platform-name iOS --platform-version 8.1 --command-timeout 7200 --show-ios-log --log-level info
1 Like

Wow - this is great feedback! Thank you so much for the tips. It is much appreciated.

Unfortunately lick / set_value is not working.
I using the ruby lib.

Then(/^I can login as “(.?)" with password "(.?)”$/) do |username, password|
wait { find_element(:name, ‘UserName’).click }
find_element(:name, ‘UserName’).set_value username
find_element(:name, ‘Password’).click
find_element(:name, ‘Password’).set_value password
click_button ‘SignIn’
end

ok, click then send_keys works, actually.

This works :
Then(/^I can login as “(.?)" with password "(.?)”$/) do |username, password|
wait { find_element(:name, ‘UserName’).click }
find_element(:name, ‘UserName’).send_keys username
find_element(:name, ‘Password’).click
find_element(:name, ‘Password’).send_keys password
click_button ‘SignIn’
end