硒和硒C#|如何单击表格中的按钮?

时间:2017-04-26 17:31:55

标签: c# html c#-4.0 selenium-webdriver

以下是我遇到问题的HTML部分。

我正在尝试做什么:我目前正在使用selenium chrome驱动程序来完成在网站上创建故障单的过程。在某个页面,我必须选择一个选项卡以检查几个复选框(见下文)。但是,它们都具有相同的ID。如何在C#中使用selenium chrome驱动程序选择(比如第二个TOP_TAB& TOP_BUTTON)并单击该元素。

<input type="hidden" name="tabsize" value="5">

<td id="TOP_TAB" width="10" class="leftRightBorder" style="width: 5px;">
    <table cellpadding="0" cellspacing="0">
        <tbody>
            <tr>
                <td id="TOP_BUTTON" style="cursor:hand;" onclick="fun_HideShowBlock('0','0');" align="center" nowrap=""><img src="images/left-cor.gif" width="5" height="18" border="0"></td>
                <td id="TOP_BUTTON" style="cursor: pointer; font-size: 10px; background-color: rgb(181, 200, 217); border-bottom: 2px solid rgb(181, 200, 217); font-weight: normal;"
                    onclick="fun_HideShowBlock('0','0');" align="center" class="drop" nowrap="" bgcolor="#B5C8D9" width="88">Addendum 02</td>
                <td id="TOP_BUTTON" style="cursor:hand;" onclick="fun_HideShowBlock('0','0');" align="center" nowrap=""><img src="images/right-cor.gif" width="5" height="18" border="0"></td>
            </tr>
        </tbody>
    </table>
</td>

<td id="TOP_TAB" width="10" class="leftRightBorder" style="width: 5px;">
    <table cellpadding="0" cellspacing="0">
        <tbody>
            <tr>
                <td id="TOP_BUTTON" style="cursor:hand;" onclick="fun_HideShowBlock('1','1');" align="center" nowrap=""><img src="images/left-cor-light.gif" width="5" height="18" border="0"></td>
                <td id="TOP_BUTTON" style="cursor: pointer; font-size: 10px; background-color: rgb(217, 223, 239); border-bottom: 0px solid rgb(217, 223, 239); font-weight: bold;"
                    onclick="fun_HideShowBlock('1','1');" align="center" class="drop" nowrap="" bgcolor="#B5C8D9" width="88">Addendum 01</td>
                <td id="TOP_BUTTON" style="cursor:hand;" onclick="fun_HideShowBlock('1','1');" align="center" nowrap=""><img src="images/right-cor-light.gif" width="5" height="18" border="0"></td>
            </tr>
        </tbody>
    </table>
</td>

<td id="TOP_TAB" width="10" class="leftRightBorder" style="width: 5px;">
    <table cellpadding="0" cellspacing="0">
        <tbody>
            <tr>
                <td id="TOP_BUTTON" style="cursor:hand;" onclick="fun_HideShowBlock('2','2');" align="center" nowrap=""><img src="images/left-cor.gif" width="5" height="18" border="0"></td>
                <td id="TOP_BUTTON" style="cursor: pointer; font-size: 10px; background-color: rgb(181, 200, 217); border-bottom: 2px solid rgb(181, 200, 217); font-weight: normal;"
                    onclick="fun_HideShowBlock('2','2');" align="center" class="drop" nowrap="" bgcolor="#B5C8D9" width="88">Default Job</td>
                <td id="TOP_BUTTON" style="cursor:hand;" onclick="fun_HideShowBlock('2','2');" align="center" nowrap=""><img src="images/right-cor.gif" width="5" height="18" border="0"></td>
            </tr>
        </tbody>
    </table>
</td>

<td id="TOP_TAB" width="10" class="leftRightBorder" style="width: 5px;">
    <table cellpadding="0" cellspacing="0">
        <tbody>
            <tr>
                <td id="TOP_BUTTON" style="cursor:hand;" onclick="fun_HideShowBlock('3','3');" align="center" nowrap=""><img src="images/left-cor.gif" width="5" height="18" border="0"></td>
                <td id="TOP_BUTTON" style="cursor: pointer; font-size: 10px; background-color: rgb(181, 200, 217); border-bottom: 2px solid rgb(181, 200, 217); font-weight: normal;"
                    onclick="fun_HideShowBlock('3','3');" align="center" class="drop" nowrap="" bgcolor="#B5C8D9" width="88">Default Job</td>
                <td id="TOP_BUTTON" style="cursor:hand;" onclick="fun_HideShowBlock('3','3');" align="center" nowrap=""><img src="images/right-cor.gif" width="5" height="18" border="0"></td>
            </tr>
        </tbody>
    </table>
</td>

<td id="TOP_TAB" width="10" class="leftRightBorder" style="width: 5px;">
    <table cellpadding="0" cellspacing="0">
        <tbody>
            <tr>
                <td id="TOP_BUTTON" style="cursor:hand;" onclick="fun_HideShowBlock('4','4');" align="center" nowrap=""><img src="images/left-cor.gif" width="5" height="18" border="0"></td>
                <td id="TOP_BUTTON" style="cursor: pointer; font-size: 10px; background-color: rgb(181, 200, 217); border-bottom: 2px solid rgb(181, 200, 217); font-weight: normal;"
                    onclick="fun_HideShowBlock('4','4');" align="center" class="drop" nowrap="" bgcolor="#B5C8D9" width="88">Default Job</td>
                <td id="TOP_BUTTON" style="cursor:hand;" onclick="fun_HideShowBlock('4','4');" align="center" nowrap=""><img src="images/right-cor.gif" width="5" height="18" border="0"></td>
            </tr>
        </tbody>
    </table>
</td>

1 个答案:

答案 0 :(得分:0)

如果你知道它总是第二个标签你可以做到这一点(和按钮的想法相同)。

driver.FindElements(By.Xpath("descendant::td[@id = 'TOP_TAB']"))[1];

如果您不知道它将是第二个,但知道您需要带有附录01的那个,您可以这样做:

driver.FindElement(By.Xpath("descendant::td[text() = 'Addendum 01']/ancestor::td[@id = 'TOP_TAB']"));

第二种方式可以获得您想要的项目,然后返回到您想要的标签。