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

时间:2015-08-14 09:14:55

标签: java html selenium xpath junit

我有一个包含以下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>

问题是“此处显示文字”是我找到正确复选框以点击的唯一信息。

我试过的是

this.getDriver().findElement(By.xpath("//span[text()='" + texthere + "']/parent::tr/following-sibling::td/div/input")).click();

怎么也找不到这个元素。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

试试这个 *首先找到你想要的子节点 *然后找到所需元素类型的第一个祖先(在你的情况下为“tr”) *然后获得此tr

下面的第一个输入元素
String xpathExpression = "//tbody//span[contains(., 'text here')]/ancestor::tr[1]//input";
driver.findElement(By.xpath(xpathExpression)).click();

答案 1 :(得分:0)

尝试使用以下xpath: -

this.getDriver().findElement(By.xpath("//tbody//td[text()='"+texthere+"']/preceding-sibling::td//input")).click();

在上面的xpath中,我们发现 td 标记,其中包含文本,并且参考此标记我们找到了它的前一个兄弟 td 这样它包含输入标签