3
<table id="Content_Content_Content_ctlCaseInfo_rdochldplcm" class="fltLeft">
        <tr>
            <td><input type="radio" id="Content_Content_Content_ctlCaseInfo_rdochldplcm_0" name="ctl00$ctl00$ctl00$Content$Content$Content$ctlCaseInfo$rdochldplcm" value="0" /><label for="Content_Content_Content_ctlCaseInfo_rdochldplcm_0">No</label></td><td><input type="radio" id="Content_Content_Content_ctlCaseInfo_rdochldplcm_1" name="ctl00$ctl00$ctl00$Content$Content$Content$ctlCaseInfo$rdochldplcm" value="1" /><label for="Content_Content_Content_ctlCaseInfo_rdochldplcm_1">Yes</label></td>
        </tr>
    </table>

当我尝试 driver.FindElement(By.Id("Content_Content_Content_ctlCaseInfo_rdochldplcm")).Click(); 当我尝试 driver.FindElement(By.Id("Content_Content_Content_ctlCaseInfo_rdochldplcm_0")).Click(); 或 driver.FindElement(By.Id("Content_Content_Content_ctlCaseInfo_rdochldplcm_1")).Click(); 没有任何反应,也没有选择单选按钮。

请提出处理这种情况的方法..非常感谢!!

4

5 回答 5

3

通过 XPath 单击单选按钮可能会更好。
在您的特定情况下,XPath 用于:

是 - 单选按钮:

"//input[contains(@id, 'rdochldplcm') and contains(@value, 1)]"

否 - 单选按钮:

"//input[contains(@id, 'rdochldplcm') and contains(@value, 0)]"

在这种情况下,如果您想单击“是”单选按钮,您可以这样做:

string yesRadioButtonXPath = "//input[contains(@id, 'rdochldplcm') and contains(@value, 1)]"
IWebElement yesRadioButton = driver.FindElement(By.XPath(yesRadioButtonXPath));
yesRadioButton.Click();

对于“否”单选按钮,您可以使用:

string noRadioButtonXPath = "//input[contains(@id, 'rdochldplcm') and contains(@value, 0)]"
IWebElement noRadioButton = driver.FindElement(By.XPath(noRadioButtonXPath));
yesRadioButton.Click();

由于您使用的是表,因此 XPath 可能会返回多个元素。在这种情况下,您需要使用不同的方法来整理元素,但是对于您要查找的内容,此方法应该有效。

于 2012-08-06T19:48:15.967 回答
1

用这个 :

//First get the list of values from the radio button

List < WebElement > elements = driver.findElements(By.cssSelector("table[id='Content_Content_Content_ctlCaseInfo_rdochldplcm'] > td"));

WebElement value;

//use loop for searching the particular element

for(WebElement element : elements){

//Getting the value of the element
value = element.findElement(By.cssSelector("label")).getText();

//condition to click on the element
  if(value.trim().equals("No")){ //Here value is hard coded. You can take from excel sheet also

    // If condition satisfies, it will click on the element

    element.findElement(By.cssSelector("input").click();
}

}

这也可以用作通用功能。

于 2013-11-06T07:12:39.803 回答
1

这完美地解决了我的问题

我有一个页面,有 6 个组中的 18 个单选按钮,分别代表“是”、“否”和“否”我试图通过 ID 获取它们,但它是由应用程序随机化的,但使用名称和值标签使其工作。

收音机基本上是这样定义的:

input value="2" class=" x-form-radio x-form-field" autocomplete="off" id="randID_13578" name="emailNotifiyOptionAllow" type="radio">

每次我打开这个页面 id 都是不同的所以使用

"//输入[包含(@name, 'emailNotifyOptionAllow') 和包含(@value, 1)]"

解决了。

谢谢

于 2013-10-21T09:54:47.937 回答
0

尝试 [0] 和 [1] 而不是下划线。

于 2012-08-03T22:53:55.210 回答
0

使用下面给出的代码尝试您的代码CSS

第 1 步:通过提供的 HTML 片段,我们可以导出单选按钮的 CSS

css=#Content_Content_Content_ctlCaseInfo_rdochldplcm input 

第2步:

使用 Web 驱动程序代码单击单选按钮

driver.findElement
   (By.cssSelector("#Content_Content_Content_ctlCaseInfo_rdochldplcm input"))
      .click();
于 2014-04-02T05:46:23.087 回答