iOS Real Device tests with Appium can fail with the following error, even if the application does have the element on the page:
NoSuchElementError: An element could not be located on the page using the given search parameters.
If the element is heavily nested, this may be caused by the Appium "snapshotMaxDepth" setting. This setting is defaulted to 50, and is meant to prevent endless loops by limiting the levels of nested elements in the App during a test.
This can be worked-around by assigning a higher value for snapshotMaxDepth in your test configuration, which increases the maximum levels of nested elements shown in the App during testing.
For example, setting:
appium:settings[snapshotMaxDepth] = 60
In your test configuration may fix the issue (as the element is now discoverable).