Вы можете использовать WebDriverWait с условиями ожидания элементов:
public class MyTestClass{
private static final int MAX_WAIT_TIME_SEC = 60;
private WebDriverWait wait;
[...]
public void setField(String fieldname, String text){
wait = new WebDriverWait(driver, MAX_WAIT_TIME_SEC);
wait.until(new NameExpectedCondition(xpath));
WebElement element = driver.findElement(By.name(fieldname));
if(element != null){
element.sendKeys(text);
}
[...]
}
public void foo()
}
с именем ожидаемое условие:
import org.openqa.selenium.By;
public class NameExpectedCondition implements ExpectedCondition<Boolean> {
private String fieldName;
public NameExpectedCondition(String fieldName)
{
this.fieldName= fieldName;
}
public Boolean apply(WebDriver d) {
d.findElement(By.Name(fieldName));
return Boolean.TRUE;
}
}
Пожалуйста, убедитесь, что вы ищете элемент в правильном кадре.