【问题标题】:Selenium: How do I assert that a certain element is present in a certain cell of a certain table?Selenium:如何断言某个元素存在于某个表的某个单元格中?
【发布时间】:2011-08-30 08:13:48
【问题描述】:

我的页面上有一个表格,它应该包含某个元素。我可以通过名称来识别表(它有一个唯一的名称),我也可以轻松地识别元素。我想断言该元素存在于表的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']) 或图像或更复杂的东西怎么办?

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

【问题讨论】:

  • 您能添加一个 HTML 示例吗?
  • \\tr[r]\td[c] 不起作用?
  • @powtac: \\tr[r]\td[c] 有效,但 \\tr[r]\td[c] 只是定位单元格。我需要做的是断言在该单元格内(我可以使用\\tr[r]\td[c] 轻松定位)驻留一个指定的元素(我可以使用它的 id 或其他东西来定位它)。请参阅我添加到问题中的说明。

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


【解决方案1】:

听起来你想要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')]");

isElementPresent() 如果是,则返回 true,如果不是,则返回 false

【讨论】:

    【解决方案2】:

    你可以试试 Selenium 的 getXpathCount

    $this->("xpath=//table[@name='tableName']//tr[".$r."]//td[".$c."]//TAG ");
    这将返回 xpath 获得的匹配数。在你的情况下,零意味着失败。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-20
      • 2022-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-20
      • 1970-01-01
      相关资源
      最近更新 更多