一尘不染

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

selenium

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

我需要断言一个 元件 指定由该元素驻留的一个定位器在一个给定的小区。


阅读 284

收藏
2020-06-26

共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则返回,否则返回。

2020-06-26