WebDriverWait wait = new WebDriverWait(driver, 90);
wait.until(ExpectedConditions.visibilityOfElementLocated(MobileBy.AccessibilityId(“Text field”)));
MobileElement mobNumberField =driver.findElementByAccessibilityId(“Text field”);
mobNumberField.sendKeys(“someTExt”);
You are with iOS or Android?
I am using iOS.
There 3 fields on different screens.
mobile field -id (“Text Field”)
sms Code field -id(“Text Field”)
network Code -id (“Text Field”)
For first field it is working but for other it is giving No such element exception,but when I am using thread.sleep it is working fine.But I will have to use only explicit wait.
and my code is like below:
public void onBoarding() throws InterruptedException{
WebDriverWait wait = new WebDriverWait(driver, 50);
wait.until(ExpectedConditions.visibilityOfElementLocated(MobileBy.AccessibilityId(“Text field”)));
MobileElement mobNumberField =driver.findElementByAccessibilityId(“Text field”);
mobNumberField.sendKeys(“XXXXXX”);
wait.until(ExpectedConditions.visibilityOfElementLocatedMobileBy.AccessibilityId(“Text field”)));
//Thread.sleep(3000);
MobileElement smsField=driver.findElemenMobileBy.AccessibilityId(“Text field”)));
smsField.sendKeys(“XXXX”);
wait.until(ExpectedConditions.visibilityOfElementLocated(MobileBy.AccessibilityId(“Text field”)));
driver.findElementByAccessibilityId(“Text field”).sendKeys(“a”);
not sure but in your case i will wrote something like:
protected List<MobileElement> waitElementLoaded(By mobileBy, int sec) {
List<MobileElement> elements;
long startTime = System.currentTimeMillis();
do {
elements = driver.findElements(mobileBy);
if (elements.size() > 0)
break;
} while (System.currentTimeMillis() < startTime + sec * 1000);
return elements;
}