À 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:

  1. Trouver l'élément qui a le texte cible ("Mango") son texte
  2. Obtenir l'attribut de l'élément
  3. Trouver l'entrée qui a un id égal à celui de l'attribut
  4. 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.
InformationsquelleAutor johnnyb1970 | 2014-05-07