Selenium:我如何断言特定表格的特定单元格中存在某个元素?

时间:2011-08-30 08:13:49

标签: php unit-testing selenium html-table selenium-rc

我的页面上有一个表,它应该包含某个元素。我可以通过名称识别表(它有一个唯一的名称),我也可以轻松识别该元素。我想断言该元素存在于表的行r,列c上。使用Selenium命令最干净的方法是什么?

说明:

  • 我不想使用多个表名来定位它(我不希望代码中的所有div\div\table\div\tbody\td\tr[r]\td[c])。
  • 我在PHPUnit中使用Selenium。因此,我可以使用PHP逻辑来完成任务,但我不希望任何复杂的逻辑用于这么简单的任务。

澄清:

如果单元格中的元素只是纯文本,那么我可以像这样检索该文本:

$this->getText("xpath=//table[@name='tableName']//tr[".$r."]//td[".$c."]");(PHP)

但是如果单元格中的元素不仅仅是纯文本呢?如果元素是链接(link=anchor)或按钮(//button[@type='button'])或图像或更复杂的内容,该怎么办?

我需要声明由该元素的定位器指定的元素驻留在给定的单元格中。

2 个答案:

答案 0 :(得分:0)

您可以尝试使用Selenium的getXpathCount

$这 - &GT( “的xpath = //表[@名= '表名'] // TR [”。$ R “] // TD [”。$ C“] // <强> TAG “);
这将返回xpath获得的匹配数。在你的情况下,零意味着失败。

答案 1 :(得分:0)

听起来像你想要的isElementPresent(...locator of element...)。例如:

$cell = "//table[@name='tableName']//tr[".$r."]/td[".$c."]";
$foundLink = $this->isElementPresent("xpath=".$cell."/a[.='".linktext."']");
$foundButton = $this->isElementPresent("xpath=".$cell."/button[@type='button']");
$foundImage = $this->isElementPresent("xpath=".$cell."/img[ends-with(@src='pretty-pony.gif')]");
如果是,则{p> isElementPresent()会返回true,如果没有,则返回false