1
votes

J'ai besoin de trouver un élément qui contient un texte particulier. Comment faire du texte une variable et le transmettre à la fonction xpath?

  @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;

1 commentaires

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


3 Réponses :


1
votes

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();
      }


2 commentaires

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



0
votes

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.


2 commentaires

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"))); ?



0
votes

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 >


0 commentaires