Java 如何通过另一个表值的文本单击复选框

Java 如何通过另一个表值的文本单击复选框,java,html,selenium,xpath,junit,Java,Html,Selenium,Xpath,Junit,我有一个带有表的页面,其中包含以下html <tbody> <tr> <td> <div> <input /> <----what I want to click </div> </td> <td></td> <td></td>

我有一个带有表的页面,其中包含以下html

<tbody>
    <tr>
       <td>
          <div>
              <input /> <----what I want to click
          </div>
       </td>
       <td></td>
       <td></td>
       <td>
          <div>
              <a>
                 <span>text here</span> <-----how i find correct table row
              </a>
          </div>
       </td>
    </tr>
</tbody>
它怎么也找不到元素

任何帮助都将不胜感激。

试试这个 *首先找到所需的子节点 *然后找到所需元素类型的第一个祖先(在您的示例“tr”中) *然后获取此tr下面的第一个输入元素

String xpathExpression = "//tbody//span[contains(., 'text here')]/ancestor::tr[1]//input";
driver.findElement(By.xpath(xpathExpression)).click();
试试这个 *首先找到所需的子节点 *然后找到所需元素类型的第一个祖先(在您的示例“tr”中) *然后获取此tr下面的第一个输入元素

String xpathExpression = "//tbody//span[contains(., 'text here')]/ancestor::tr[1]//input";
driver.findElement(By.xpath(xpathExpression)).click();
尝试使用以下xpath:-

this.getDriver().findElement(By.xpath("//tbody//td[text()='"+texthere+"']/preceding-sibling::td//input")).click();
在上面的xpath中,我们找到了td标记,其中包含文本,关于这个标记,我们找到了它前面的同级td,这样它就包含了输入标记

请尝试下面的xpath:-

this.getDriver().findElement(By.xpath("//tbody//td[text()='"+texthere+"']/preceding-sibling::td//input")).click();
在上面的xpath中,我们找到了td标记,其中包含文本,关于这个标记,我们找到了它前面的同级td,这样它就包含了输入标记