À l'aide de Sélénium, de la manière de cliquer sur un bouton radio basées sur l'étiquette associée
Je suis en utilisant le Sélénium en C#, et j'ai besoin d'être en mesure de spécifier le bouton radio sur un site web, cliquez sur la base du texte de l'étiquette qui est associé à ce bouton radio. J'ai besoin d'être en mesure de passer ce texte en tant que paramètre. Voici un échantillon de ce que le code pour les boutons radio ressemble (c'est pour les trois boutons):
<input id="radSelect152_222_1369" class="bgRadioNotChecked" type="radio" onclick="BGQ.Ajax.SelectAnswer(this, '152','1369','3', '547');" value="1369" onfocus="BGQ.View.setLastElement(true);" name="radSelect152_222">
<label class="inline" for="radSelect152_222_1369">Watermelon</label>
<input id="radSelect152_222_1370" class="bgRadioNotChecked" type="radio" onclick="BGQ.Ajax.SelectAnswer(this, '152','1370','3', '547');" value="1370" onfocus="BGQ.View.setLastElement(true);" name="radSelect152_222">
<label class="inline" for="radSelect152_222_1370">Papaya</label>
<input id="radSelect152_222_1371" class="bgRadioNotChecked" type="radio" onclick="BGQ.Ajax.SelectAnswer(this, '152','1371','3', '547');" value="1371" onfocus="BGQ.View.setLastElement(true);" name="radSelect152_222">
<label class="inline" for="radSelect152_222_1371">Mango</label>
Je veux être en mesure de préciser "Mango" dans un fichier Excel fichier d'entrée (j'ai tous les fichiers d'entrée des trucs fonctionne bien) et ont Sélénium cliquez sur le bouton d'option associé. Une approche que j'ai lu que j'ai essayé est de faire ce qui suit:
- Trouver l'élément qui a le texte cible ("Mango") son texte
- Obtenir l'attribut de l'élément
- Trouver l'entrée qui a un id égal à celui de l'attribut
- Cliquez sur l'élément d'entrée.
Problème est, je suis assez nouveau pour le Sélénium et ne peut pas tout à fait comprendre la syntaxe de la procédure à suivre ces quatre étapes. Quelqu'un peut-il me montrer le chemin, avec des exemples de code? Aussi, ou sinon, est-il mieux/plus intelligente façon de le faire? Si oui, veuillez être précis.
J'ai inclus ici la méthode que j'ai commencé à écrire, dans lequel je passe dans le texte cible. Je sais que c'est mal (surtout dans le Par.XPath partie).
public void ClickRadioButtonByLabelText(string labelText)
{
//(1) Find the element that has the label text as its text
IWebElement labelForButton = commondriver.FindElement(By.XPath(//label[text()='labelText']));
//(2) Get the FOR attribute from that element
string forAttribute
//(3) Find the input that has an id equal to that FOR attribute
//(4) Click that input element
}
Grâce.
- Pourquoi ne pas cliquez sur l'Étiquette? Comme ils sont liés par le
for
attribut qui doit sélectionner la case correspondante.
Vous devez vous connecter pour publier un commentaire.
Vous avez deux options.
Option 1 - faire au sein d'une même requête XPath
La requête XPath serait:
C'est, obtenir
input
qui a unid
qui vient de lafor
attribut à partir d'unlabel
qui a letext
de "TestCheckBox"Option 2 - obtenir l'attribut de l'étiquette, puis trouver l'élément séparé étapes
//label[contains(., 'Other')]
. Je suis juste en utilisant XPath vous a donné dans le premier post, j'ai supposé que tu avais déjà vérifié qu'il fonctionne.normalize-space
.//label[normalize-space(text())='Other']
ou//label[normalize-space(.)='Other']