使用Selenium,如何根据关联的标签单击单选按钮

时间:2014-05-07 14:21:27

标签: c# html selenium automation

我在C#中使用Selenium,我需要能够根据与该单选按钮关联的标签文本指定网站上的哪个单选按钮。我需要能够将该文本作为参数传递。下面是单选按钮代码的示例(这是三个按钮):

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

我希望能够指定&#34; Mango&#34;在Excel输入文件中(我有所有文件输入的东西工作正常)并让Selenium单击相关的单选按钮。我读过的一种我尝试过的方法是执行以下操作:

  1. 查找具有目标文本的元素(&#34; Mango&#34;)作为其文本
  2. 从该元素获取FOR属性
  3. 查找id等于FOR属性
  4. 的输入
  5. 点击该输入元素。
  6. 问题是,我对Selenium很新,并且不能完全掌握如何执行这四个步骤的语法。有人可以用特定的代码示例向我展示方式吗?另外,或者,是否有更好/更聪明的方法来做到这一点?如果是,请具体说明。

    我已经在这里列出了我开始编写的方法,其中我传入了目标文本。我知道这是错的(特别是在By.XPath部分)。

        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
        }
    

    感谢。

1 个答案:

答案 0 :(得分:5)

您有两种选择。

选项1 - 在单个XPath查询中完成所有操作

XPath查询将是:

//input[@id=//label[text()='TestCheckBox']/@for]

也就是说,input来自id属性for的{​​{1}}来自label的{​​{1}}

选项2 - 从标签中获取属性,然后以单独步骤查找元素

text