@FindBy(how = How.XPATH, using = "//label[text()='Mr']" ) public WebElement mr; @FindBy(how = How.XPATH, using = "//label[text()='Mrs']" ) public WebElement mrs; @FindBy(how = How.XPATH, using = "//label[text()='Miss']" ) public WebElement miss;
3 Réponses :
Vous pouvez créer ce type de méthode et passer le texte de l'argument pour cliquer sur l'élément souhaité
public void clickOnButton(String text){ WebElement button = driver.findElement(By.xpath("//label[text() = '"+text+"']")); button.click(); }
Existe-t-il un moyen de le faire avec la fabrique de pages?
Je pense que non car l'argument doit être constant lorsque vous utilisez l'annotation @FindBy
Utilisez simplement String.format()
Vous voulez donc quelque chose comme ceci:
String selector = "// label [text () = '% s']";
Ensuite, vous pouvez simplement faire WebElement mr = driver.findElement (By.cssSelector (String.format (selector, "Mr")));
format prendra automatiquement le contenu du deuxième argument et le mettra à la place du% s.
Puis-je utiliser l'annotation @FindBy ici?
Je ne vois vraiment aucune raison pour laquelle vous utilisez @FindBy dans ce scénario. Pourquoi ne pas simplement utiliser WebElement mr = driver.findElement (By.cssSelector (String.format (selector, "Mr")));
?
Utilisez |
dans xpath pour effectuer l'opération OR, par exemple
@FindBy(how = How.XPATH, using = "//label[text()='Mr'] | //label[text()='Mrs'] | //label[text()='Miss']" ) public WebElement prefix;
Cela renverra votre élément si une condition satisfait à 3.
p >
salut, votre question n'est pas écrite très clairement - veuillez modifier votre code pour qu'il soit correctement formaté (vérifiez comment écrire le démarque si vous en avez besoin) et assurez-vous d'écrire ce que vous voulez réaliser, ce que vous avez essayé et quels problèmes vous re face. après l'édition, la communauté peut mieux aider :) merci