Comment attendre pour l'élément d'entrée activé dans selenium webdriver?
Je suis en train d'écrire un script pour sélectionner et entrer une valeur en dessous de l'écran dans JIRA.
La question du type "est un" entrée " élément avec la saisie semi-automatique de la propriété:
HTML:
<input type="text" autocomplete="off" role="combobox" aria-autocomplete="list" aria-haspopup="true" aria-expanded="false" class="text aui-ss-field ajs-dirty-warning-exempt" id="issuetype-field" aria-controls="issuetype-suggestions">
Juste après la saisie d'une valeur pour "type d'entrée", le reste des domaines tels que la "synthèse" gris pour quelques secondes. Si j'essaie d'entrer une valeur pour "résumé" de droite du champ après, à l'aide de code suivant:
myDriver.findElement(By.id("summary")).sendKeys(summary);
résumé champ ne sera pas conclu, plutôt une erreur "Élément introuvable dans le cache - peut-être que la page a changé depuis qu'il était levé les yeux.." va arriver.
Code HTML pour 'résumé' de champ est:
HTML:
<input type="text" value="" name="summary" id="summary" class="text long-field">
Donc ce que je veux, c'est juste pour attendre "sommaire" champ de saisie pour être activé et puis sendkey à elle. Je suis à la recherche de quelque chose comme
ExpectedConditions.presenceOfElementLocated
mais au lieu de cela j'ai besoinactivé", pas presenceOfElementLocated
ou visibilityOfElementLocated
. Je ne veux pas utiliser Thread.sleep()
soit.
Des suggestions?
Vous devez vous connecter pour publier un commentaire.
Comment sur
ExpectedConditions.elementToBeClickable(locator)
?elementToBeClickable
vérifie si l'élément est activé.https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/support/ui/ExpectedConditions.html#elementToBeClickable-org.openqa.selenium.By-
L'attente est un WebDriverWait et nous voulons attendre jusqu'à ce que nous obtenir une réponse lors de l'WebElement est activé. Le pilote est mon WebDriver instance qui est déclarée à l'échelle mondiale. Si il timesout sans avoir une vrai réponse alors je cantch l'exception (de sorte que le test va continuer) et afficher un message vous indiquant que l'opération a expiré.
Je suis aide d'une expression Lambda de sorte que vous devez être sur le sélénium 3.1 ou supérieur (avec la goyave 21)