我在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单击相关的单选按钮。我读过的一种我尝试过的方法是执行以下操作:
问题是,我对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
}
感谢。
答案 0 :(得分:5)
您有两种选择。
选项1 - 在单个XPath查询中完成所有操作
XPath查询将是:
//input[@id=//label[text()='TestCheckBox']/@for]
也就是说, 选项2 - 从标签中获取属性,然后以单独步骤查找元素 input
来自id
属性for
的{{1}}来自label
的{{1}} text