0

私は現在、Java/Selenium Web ドライバーの自動化に取り組んでいます。ただし、値に基づいてチェックボックスをWebドライバーにクリックさせることができないこの特定の部分で立ち往生しています。

driver.findElement(By.xpath("//input[@class='chkPopupCod']/following::td[contains(text(),'BBB')]")).click();

xpathのAxes部分を使用しなかったときに機能しますが、最初のチェックボックスしか選択できません

以下はhtmlのスニペットです

<tr class="even">
<td style="width: 20px;">
<input class="chkPopupCod" type="checkbox">codData=Object { id=101914, codId=101906, label="AAA", more...}
</td>
<td class="" align="left">AAA</td>
</tr>
<tr class="odd">
<td style="width: 20px;">
<input class="chkPopupCod" type="checkbox" style="background-color: rgb(255, 255, 255);">codData=Object { id=101918, codId=101907, label="BBB", more...}
</td>
<td class="" align="left" style="background-color: transparent;">BBB</td>
</tr>
<tr class="even">
<td style="width: 20px;">
<input class="chkPopupCod" type="checkbox">codData=Object { id=101922, codId=101908,   label="CCC", more...}
</td>
<td class="" align="left">CCC</td>
</tr>
4

3 に答える 3

0

テーブルを操作するとき、私は常に、作業しているテーブルの行を最初に特定するのが好きです。このために、テーブルの行を返すメソッドがあり、そこから使用したい要素を探し始めます。

例:親テーブルの行を取得する方法 -

    public void IWebElement GetParentTableRow(IWebElement element)
    {
        while (!element.TagName.ToLower().Equals("tr"))
        {
            try
            {
                element = element.FindElement(By.XPath("..")); //Returns the parent
            }
            catch
            {
                return null;
            }
        }

        return element;
    }

使用法 -

public void Test()
{
   IWebElement tableRow = GetParentTableRow(driver.FindElement(By.XPath("//td[contains(text(),'BBB')]"));
   tableRow.FindElement(By.ClassName("chkPopupCod")).Click();
}

それが役に立てば幸い。:)

于 2013-10-07T10:03:26.360 に答える