Appium hangs on refresh screen

I am using Appium/iOS Simulator/JavaScript WD Using Appium front end

App Version: 1.21.0
Electron: 7.2.4
Node.js: 12.8.1

I have a problem where my Appium session gets to a point where the App is downloading data and displaying a spinner. The Appium p[rocess stops, displaying the spinner. Meanwhile in the simulator it downloads the data and goes into the next screen.

Ok. I know what to ds: I press the refresh button.

Now the Appium is spinning its wheels. I can use the menus (change the language to Dutch, for example) but none of the buttons work

Between clicking the refresh button and hanging this is the log:

 [info] e[35m[HTTP]e[39m e[90me[39m[info] e[35m[HTTP]e[39m e[37m-->e[39m e[37mGETe[39m e[37m/wd/hub/session/649f4644-9ea7-4fa9-85e8-d288a9452a8b/contextse[39m
 [info] e[35m[HTTP]e[39m e[90m{}e[39m
 [debug] e[35m[MJSONWP (649f4644)]e[39m Calling AppiumDriver.getContexts() with args: ["649f4644-9ea7-4fa9-85e8-d288a9452a8b"]
 [debug] e[35m[XCUITest]e[39m Executing command 'getContexts'
 [debug] e[35m[XCUITest]e[39m Getting list of available contexts
 [debug] e[35m[iOS]e[39m Retrieving contexts and views
 [debug] e[35m[XCUITest]e[39m Selecting by url: false 
 [debug] e[35m[RemoteDebugger]e[39m Sending connection key request
 [debug] e[35m[RemoteDebugger]e[39m Sending '_rpc_reportIdentifier:' message (id: 30): 'setConnectionKey'
 [debug] e[35m[RemoteDebugger]e[39m Sending to Web Inspector took 5ms
 [debug] e[35m[RemoteDebugger]e[39m Selecting application
 [debug] e[35m[RemoteDebugger]e[39m No applications currently connected.
 [debug] e[35m[XCUITest]e[39m No web frames found.
 [debug] e[35m[MJSONWP (649f4644)]e[39m Responding to client with driver.getContexts() result: ["NATIVE_APP"]
 [info] e[35m[HTTP]e[39m e[37m<-- GET /wd/hub/session/649f4644-9ea7-4fa9-85e8-d288a9452a8b/contexts e[39me[32m200e[39m e[90m13 ms - 86e[39m
 [info] e[35m[HTTP]e[39m e[90me[39m[info] e[35m[HTTP]e[39m e[37m-->e[39m e[37mGETe[39m e[37m/wd/hub/session/649f4644-9ea7-4fa9-85e8-d288a9452a8b/contexte[39m
 [info] e[35m[HTTP]e[39m e[90m{}e[39m
 [debug] e[35m[MJSONWP (649f4644)]e[39m Calling AppiumDriver.getCurrentContext() with args: ["649f4644-9ea7-4fa9-85e8-d288a9452a8b"]
 [debug] e[35m[XCUITest]e[39m Executing command 'getCurrentContext'
 [debug] e[35m[MJSONWP (649f4644)]e[39m Responding to client with driver.getCurrentContext() result: "NATIVE_APP"
 [info] e[35m[HTTP]e[39m e[37m<-- GET /wd/hub/session/649f4644-9ea7-4fa9-85e8-d288a9452a8b/context e[39me[32m200e[39m e[90m1 ms - 84e[39m
 [info] e[35m[HTTP]e[39m e[90me[39m
 [info] e[35m[HTTP]e[39m e[37m-->e[39m e[37mGETe[39m e[37m/wd/hub/session/649f4644-9ea7-4fa9-85e8-d288a9452a8be[39m
 [info] e[35m[HTTP]e[39m e[90m{}e[39m
 [debug] e[35m[MJSONWP (649f4644)]e[39m Calling AppiumDriver.getSession() with args: ["649f4644-9ea7-4fa9-85e8-d288a9452a8b"]
 [debug] e[35m[XCUITest]e[39m Executing command 'getSession'
 [info] e[35m[XCUITest]e[39m Merging WDA caps over Appium caps for session detail response
 [debug] e[35m[MJSONWP (649f4644)]e[39m Responding to client with driver.getSession() result: {"udid":"E697EC67-CD3D-407A-B484-13F43CDEC219","app":"/Users/user/Documents/B52/build/Release-iphonesimulator/B52FloorManagement.app","automationName":"XCUITest","deviceName":"iPad Pro (12.9-inch) (5th generation)","platformName":"iOS","uuid":"E697EC67-CD3D-407A-B484-13F43CDEC219","newCommandTimeout":0,"connectHardwareKeyboard":true,"device":"ipad","browserName":"QCI Slots","sdkVersion":"14.5","CFBundleIdentifier":"paulcardnoTestIdentifyer.B52FloorManagement","pixelRatio":2,"statBarHeight":24,"viewportRect":{"left":0,"top":48,"width":2732,"height":2000}}
 [info] e[35m[HTTP]e[39m e[37m<-- GET /wd/hub/session/649f4644-9ea7-4fa9-85e8-d288a9452a8b e[39me[32m200e[39m e[90m2 ms - 632e[39m
 [info] e[35m[HTTP]e[39m e[90me[39m
 [info] e[35m[HTTP]e[39m e[37m-->e[39m e[37mGETe[39m e[37m/wd/hub/session/649f4644-9ea7-4fa9-85e8-d288a9452a8b/window/current/sizee[39m
 [info] e[35m[HTTP]e[39m e[90m{}e[39m
 [debug] e[35m[MJSONWP (649f4644)]e[39m Calling AppiumDriver.getWindowSize() with args: ["current","649f4644-9ea7-4fa9-85e8-d288a9452a8b"]
 [debug] e[35m[XCUITest]e[39m Executing command 'getWindowSize'
 [debug] e[35m[WD Proxy]e[39m Proxying [GET /window/size] to [GET http://127.0.0.1:8100/session/34D0E460-D645-4115-80C8-81E621A6C507/window/size] with no body[debug] e[35m[WD Proxy]e[39m Got response with status 200: {"value":{"width":1366,"height":1024},"sessionId":"34D0E460-D645-4115-80C8-81E621A6C507"}
 [debug] e[35m[MJSONWP (649f4644)]e[39m Responding to client with driver.getWindowSize() result: {"width":1366,"height":1024}
 [info] e[35m[HTTP]e[39m e[37m<-- GET /wd/hub/session/649f4644-9ea7-4fa9-85e8-d288a9452a8b/window/current/size e[39me[32m200e[39m e[90m969 ms - 100e[39m
 [info] e[35m[HTTP]e[39m e[90me[39m
 [info] e[35m[HTTP]e[39m e[37m-->e[39m e[37mPOSTe[39m e[37m/wd/hub/session/649f4644-9ea7-4fa9-85e8-d288a9452a8b/executee[39m
 [info] e[35m[HTTP]e[39m e[90m{"script":"mobile:getContexts","args":[]}e[39m
 [debug] e[35m[MJSONWP (649f4644)]e[39m Calling AppiumDriver.execute() with args: ["mobile:getContexts",[],"649f4644-9ea7-4fa9-85e8-d288a9452a8b"]
 [debug] e[35m[XCUITest]e[39m Executing command 'execute'
 [debug] e[35m[XCUITest]e[39m Getting list of available contexts
 [debug] e[35m[iOS]e[39m Retrieving contexts and views
 [debug] e[35m[XCUITest]e[39m Selecting by url: false 
 [debug] e[35m[RemoteDebugger]e[39m Sending connection key request
 [debug] e[35m[RemoteDebugger]e[39m Sending '_rpc_reportIdentifier:' message (id: 32): 'setConnectionKey'[info] e[35m[HTTP]e[39m e[37m-->e[39m e[37mGETe[39m e[37m/wd/hub/session/649f4644-9ea7-4fa9-85e8-d288a9452a8b/sourcee[39m
 [info] e[35m[HTTP]e[39m e[90m{}e[39m
 [debug] e[35m[MJSONWP (649f4644)]e[39m Calling AppiumDriver.getPageSource() with args: ["649f4644-9ea7-4fa9-85e8-d288a9452a8b"]
 [debug] e[35m[XCUITest]e[39m Executing command 'getPageSource'
 [debug] e[35m[WD Proxy]e[39m Matched '/source' to command name 'getPageSource'
 [debug] e[35m[WD Proxy]e[39m Proxying [GET /source] to [GET http://127.0.0.1:8100/session/34D0E460-D645-4115-80C8-81E621A6C507/source] with no body[debug] e[35m[WD Proxy]e[39m Got response with status 200: {"value":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<XCUIElementTypeAny type=\"XCUIElementTypeAny\" name=\"QCI Slots\" label=\"QCI Slots\" enabled=\"true\" visible=\"true\" accessible=\"false\" x=\"0\" y=\"0\" width=\"1024\" height=\"1366\" index=\"0\">\n  <XCUIElementTypeWindow type=\"XCUIElementTypeWindow\" enabled=\"true\" visible=\"true\" accessible=\"false\" x=\"0\" y=\"0\" width=\"1366\" height=\"1024\" index=\"0\">\n    <XCUIElementTypeOther type=\"XCUIElementTypeOther\" enabled=\"true\" visible=\"true\" accessible=\"false\" x=\"0\" y=\"0\" width=\"1366\" height=\"1024\" index=\"0\">\n      <XCUIElementTypeOther type=\"XCUIElementTypeOther\" enabled=\"true\" visible=\"true\" accessible=\"false\" x=\"0\" y=\"0\" width=\"1366\" height=\"1024\" index=\"0\">\n        <XCUIEle
 [debug] e[35m[MJSONWP (649f4644)]e[39m Responding to client with driver.getPageSource() result: "<?xml version=\"1.0\" encoding=\"UTF-8\"?><AppiumAUT><XCUIElementTypeAny type=\"XCUIElementTypeAny\" name=\"QCI Slots\" label=\"QCI Slots\" enabled=\"true\" visible=\"true\" accessible=\"false\" x=\"0\" y=\"0\" width=\"1024\" height=\"1366\" index=\"0\">\n  <XCUIElementTypeWindow type=\"XCUIElementTypeWindow\" enabled=\"true\" visible=\"true\" accessible=\"false\" x=\"0\" y=\"0\" width=\"1366\" height=\"1024\" index=\"0\">\n    <XCUIElementTypeOther type=\"XCUIElementTypeOther\" enabled=\"true\" visible=\"true\" accessible=\"false\" x=\"0\" y=\"0\" width=\"1366\" height=\"1024\" index=\"0\">\n      <XCUIElementTypeOther type=\"XCUIElementTypeOther\" enabled=\"true\" visible=\"true\" accessible=\"false\" x=\"0\" y=\"0\" width=\"1366\" height=\"1024\" index=\"0\">\n        <XCUIElementTypeOther type=\"XCUIElementTypeOther\" enabled=\"true\" visible=\"true\" accessible=\"false\" x=\"0\" y=\
 [info] e[35m[HTTP]e[39m e[37m<-- GET /wd/hub/session/649f4644-9ea7-4fa9-85e8-d288a9452a8b/source e[39me[32m200e[39m e[90m141226 ms - 538779e[39m
 [info] e[35m[HTTP]e[39m e[90me[39m[info] e[35m[HTTP]e[39m e[37m-->e[39m e[37mGETe[39m e[37m/wd/hub/session/649f4644-9ea7-4fa9-85e8-d288a9452a8b/screenshote[39m
 [info] e[35m[HTTP]e[39m e[90m{}e[39m
 [debug] e[35m[MJSONWP (649f4644)]e[39m Calling AppiumDriver.getScreenshot() with args: ["649f4644-9ea7-4fa9-85e8-d288a9452a8b"]
 [debug] e[35m[XCUITest]e[39m Executing command 'getScreenshot'
 [debug] e[35m[XCUITest]e[39m Taking screenshot with WDA
 [debug] e[35m[WD Proxy]e[39m Matched '/screenshot' to command name 'getScreenshot'
 [debug] e[35m[WD Proxy]e[39m Proxying [GET /screenshot] to [GET http://127.0.0.1:8100/session/34D0E460-D645-4115-80C8-81E621A6C507/screenshot] with no body[debug] e[35m[WD Proxy]e[39m Got response with status 200: {"value":"iVBORw0KGgoAAAANSUhEUgAACqwAAAgACAYAAABZr4CuAAAAAXNSR0IArs4c6QAA\r\nAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKAC\r\nAAQAAAABAAAKrKADAAQAAAABAAAIAAAAAAC8BamsAAAAHGlET1QAAAACAAAAAAAA\r\nBAAAAAAoAAAEAAAABAAABdzIHCaABQAAQABJREFUeAHsnfebJEeVroXcyM4gD8KM\r\nAEmjkTQSMjjBIkB4JJAXbs2z9/6yi93de/EIZEcSsPvcvzhvvVm8rTOhzKqs7qrq\r\n6p7vh3hOZJgTx3wR1ZX9dfQl99//QJeSGAQDwUAwEAwEA8FAMBAMBAPBQDAQDAQD\r\nwUAwEAwEA8FAMBAMBAPBQDAQDAQDwUAwEAwEA8FAMBAMBAPBQDAQDAQDwUAwEAxs\r\nCgOXbEpx9Aa0wUAwEAwEA8FAMBAMBAPBQDAQDAQDwUAwEAwEA8FAMBAMBAPBQDAQ\r\nDAQDwUAwEAwEA8FAMBAMBAPBQDAQDAQDwUAwEAwEA2AghNXcMJsbdoOBYCAYCAaC\r\ngWAgGAgGgoFgIBgIBoKBYCAYCAaCgWAgGAgGgoFgIBgIBoKBYCAYCAaCgWAgGAgG\r\ngoFgIBgIBoKBYCAY2CgGQlgNwDYKsDDjw4wPBoKBYCAYCAaCgWAgGAgGgoFgIBgI\r\nBoKBYCAYCAaCgWAgGAgGgoFgI
 [debug] e[35m[MJSONWP (649f4644)]e[39m Responding to client with driver.getScreenshot() result: "iVBORw0KGgoAAAANSUhEUgAACqwAAAgACAYAAABZr4CuAAAAAXNSR0IArs4c6QAA\r\nAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKAC\r\nAAQAAAABAAAKrKADAAQAAAABAAAIAAAAAAC8BamsAAAAHGlET1QAAAACAAAAAAAA\r\nBAAAAAAoAAAEAAAABAAABdzIHCaABQAAQABJREFUeAHsnfebJEeVroXcyM4gD8KM\r\nAEmjkTQSMjjBIkB4JJAXbs2z9/6yi93de/EIZEcSsPvcvzhvvVm8rTOhzKqs7qrq\r\n6p7vh3hOZJgTx3wR1ZX9dfQl99//QJeSGAQDwUAwEAwEA8FAMBAMBAPBQDAQDAQD\r\nwUAwEAwEA8FAMBAMBAPBQDAQDAQDwUAwEAwEA8FAMBAMBAPBQDAQDAQDwUAwEAxs\r\nCgOXbEpx9Aa0wUAwEAwEA8FAMBAMBAPBQDAQDAQDwUAwEAwEA8FAMBAMBAPBQDAQ\r\nDAQDwUAwEAwEA8FAMBAMBAPBQDAQDAQDwUAwEAwEA2AghNXcMJsbdoOBYCAYCAaC\r\ngWAgGAgGgoFgIBgIBoKBYCAYCAaCgWAgGAgGgoFgIBgIBoKBYCAYCAaCgWAgGAgG\r\ngoFgIBgIBoKBYCAY2CgGQlgNwDYKsDDjw4wPBoKBYCAYCAaCgWAgGAgGgoFgIBgI\r\nBoKBYCAYCAaCgWAgGAgGgoFgIBgIBoKBYCAYCAaCgWAgGAgGgoFgIBgIBoKBEFZD\r\nWA1hNRgIBoKBYCAYCAaCgWAgGAgGgoFgIBgIBoKBYCAYCAaCgWAgGAgGgoFgIBgI\r\nBoKBYCAYCAaCgWAg

Are you using Desktop Appium for automation? I use Desktop for identifying elements, walking through app, etc. But it’s exactly the kind of problems that you are seeing here that I don’t use it for automation. I don’t think they even advertise it as being able to run automation.

Best advice is to move to command line if you are running automation. Install via Node or download the git repo.

Hey, then you could use the task runner!

Excuse me being slow. Very busy, and I get to automated testing periodically!

First: What is “the task runner”?

Yes. I agree. I now programme my tests directly and try to stay away from the GUI. I often dump all visible widgets (which can take a minute or two) to get my bearings.

    let allVisibleElements = await driver.elements('-ios predicate string', 'visible = 1');
    for (let i = 0; i < allVisibleElements.length; i++) {
        console.log(`Visible Element ${i}: ${await reportAttributes(allVisibleElements[i])}`);
    }

This was from another thread. It’s a reference that’s probably 2 months old, so I don’t remember which task runner you were using. I think you are on Javascript so here is a list of task runners for that language: task runners