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

これは私の問題を完全に解決しました

「はい」「いいえ」「無回答」を表す 6 つのグループに 18 個のラジオ ボタンがあるページがあります。ID で取得しようとしましたが、アプリによってランダム化されましたが、名前タグと値タグを使用すると機能しました。

ラジオは基本的に次のように定義されました。

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

このページを開くたびにIDが異なっていたので、

"//input[contains(@name, 'emailNotifyOptionAllow') and contains(@value, 1)]"

それを解決しました。

ありがとう

于 2013-10-21T09:54:47.937 に答える
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 に答える
0

以下のコードを試してくださいCSS

ステップ 1: 提供された HTML ピースによって、ラジオ ボタンの CSS を取得できます。

css=#Content_Content_Content_ctlCaseInfo_rdochldplcm input 

ステップ2:

Web Driver Code を使用してラジオ ボタンをクリックします。

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

アンダースコアの代わりに [0] と [1] を試してください。

于 2012-08-03T22:53:55.210 に答える