I am automating an iOS app.
I have an element, let’s call it ‘valueElement’. I want to get its value attribute so I run:
valueElement.getText();
Before getting the text I call wait.until(visibilityOf(valueElement)) to make sure it is visible before using it.
The waiting loop never ends and I cannot get the element’s value (because isDisplayed() always false).
-
The element is visible:true in appium inspector.
-
When executing driver.getPageSource() it shows the element as visible:true.
Although that, isDisplayed() returns false. -
When connecting to session during the execution, it shows visible:true when isDisplayed() returns false.
-
Another bizarre thing!
I am running my tests using Jenkins CI. when I run the test locally on my computer it works perfectly. But, when I execute it on the VM it does not work. No changes were made on this specific element (valueElement) on the iOS mobile code. -
My local computer is identical to the VM and still, it does not work on the VM.
-
appium: 2.0.0-beta.40
-
java-client: 7.6.0
-
Xcode: 13.4
-
MacOS: Monterey (M1 chip)
For now I worked around it, I wait for the valueElement’s parent visibility and then just running valueElement.getText() without the visibility check on the element.
Could it be a WebDriverAgent issue? Xcode internal? (it works on one computer and not the other one with the same setup)
Will provide more info if needed. Thanks.
I also found this: Appium iOS on Bitrise returns false when checking element displayed and he tells he had the exact issue (works locally but not on the CI, regarding iOS visibility).