如何在表格单元格中单击按钮

本文关键字:单击 按钮 单元格 表格 | 更新日期: 2023-09-27 18:18:53

我试图单击一个按钮,这是在一个表单元格。这个单元格包含两个按钮。表有5行10列。按钮单元格是最后一个。尝试在firefox中使用xpath工具,但我得到一个异常,该元素无法找到。尝试了以下xpath变体:

Drv.Driver.FindElement(By.XPath("//table[@id='SERVICE_CANCEL']/tbody/tr[" + 4 + "]/td[10]")).Click();
Drv.Driver.FindElement(By.XPath(".//*[@id='SERVICE_CANCEL']/tr[" + 4 + "]/td[10]/div")).Click();
Drv.Driver.FindElement(By.XPath("//[@serid='10002455']/tr[4]")).Click();

这些都不起作用。同样,在每一行的第10个单元格中有一组按钮,正如我之前所说的。没有任何其他的想法如何点击它。如果你能帮忙的话,我会很感激的。

因为HTML代码有点"大",所以它的一部分:

<TR class=datagrid-row id=datagrid-row-r2-2-3 datagrid-row-index="3">
<TD style="DISPLAY: none" field="index">
<DIV class="datagrid-cell datagrid-cell-c2-index" style="HEIGHT: auto; WHITE-SPACE: normal; TEXT-ALIGN: left">4</DIV></TD>
<TD field="name">
<DIV class="datagrid-cell datagrid-cell-c2-name">Text1</DIV></TD>
<TD field="ID">
<DIV class="datagrid-cell datagrid-cell-c2-ID">000</DIV></TD>
<TD field="ID2">
<DIV class="datagrid-cell datagrid-cell-c2-ID2">111</DIV></TD>
<TD field="ID3">
<DIV class="datagrid-cell datagrid-cell-c2-ID3"></DIV></TD>
<TD field="buttons">
<DIV class="datagrid-cell datagrid-cell-c2-buttons" style="HEIGHT: auto; WHITE-SPACE: normal; TEXT-ALIGN: left">
<DIV class=gridbuttons><A title="shutdown" class="button enabled" id=SERVICE_CANCEL serid="10002455"></A></DIV></TD></TR>

如何在表格单元格中单击按钮

按钮有一个id (SERVICE_CANCEL)。首先,你应该纠正HTML,因为你需要引号,如:<a id="SERVICE_CANCEL">,然后使用:

 Drv.Driver.FindElement(By.Id("SERVICE_CANCEL")).Click();

如果有id

就不需要xpath了

Shien,由于我们不能在带有ID的表单元格值中使用ID(因为这些可以动态生成或不唯一),因此需要提供整个xpath。

我已经采取了你的HTML,只是更新了最后的值,你可以看到**和以下是硒的代码为我工作。

HTML代码:

<html>
<body>
<table border="1" width="200px">
<TR class=datagrid-row id=datagrid-row-r2-2-3 datagrid-row-index="3">
<TD style="DISPLAY: none" field="index">
<DIV class="datagrid-cell datagrid-cell-c2-index" style="HEIGHT: auto; WHITE-SPACE: normal; TEXT-ALIGN: left">4</DIV></TD>
<TD field="name">
<DIV class="datagrid-cell datagrid-cell-c2-name">Text1</DIV></TD>
<TD field="ID">
<DIV class="datagrid-cell datagrid-cell-c2-ID">000</DIV></TD>
<TD field="ID2">
<DIV class="datagrid-cell datagrid-cell-c2-ID2">111</DIV></TD>
<TD field="ID3">
<DIV class="datagrid-cell datagrid-cell-c2-ID3"></DIV></TD>
<TD field="buttons">
<DIV class="datagrid-cell datagrid-cell-c2-buttons" style="HEIGHT: auto; WHITE-SPACE: normal; TEXT-ALIGN: left">
<DIV class=gridbuttons>**<input type=button value="shutdown" class="button enabled" id=SERVICE_CANCEL serid="10002455" onclick="calFunc()"></input>**</DIV></TD></TR>
</table>
<script>
function calFunc()
{
  alert("Hello World");
} 
</script>
</body>
</html>

Selenium Code in Java:

driver.findElement(By.xpath("//table/tbody/tr[1]/td[6]/div/div/input[@value='shutdown']")).click();

深入挖掘后找到了解决方案。我使用的Xpath是:

//a[contains(@id, 'SERVICE_CANCEL') and contains (@serid, '" +tempPaslaugosIDReiksme + "')]"