当前位置: 首页 > 面试题库 >

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

呼延原
2023-03-14
问题内容

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

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


问题答案:

听起来像你想要的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则返回,否则返回。



 类似资料:
  • 有一个postgres表具有带有时区的时间戳(格式为'YYYY-MM-DD HH24:MI:SS.PPPP'表作为主键)。我想检查postgres表中是否存在特定的时间戳(没有时区)。

  • rank ▲ ✰ vote url 42 465 90 791 url 查找列表中某个元素的下标 比如["foo","bar","baz"]和它的一个元素"bar",用什么方法能找到它的下标(1)? >>> ["foo","bar","baz"].index('bar') 1 参考资料:Data Structures > More on Lists

  • 问题内容: 我有10 秒之一。如何用另一个值更新索引? 问题答案: 让是和新的,那么就这样做: 可以在此处的Java api参考中找到。

  • 我正在尝试编写一个方法,它接受一个string变量(某个节点的名称),并获得包含一个文本与给定字符串相同的元素的tr元素。 我试过了 此代码抛出一个异常“无法求值或未导致WebElement”。 提前致谢 会奏效的。我无法解释为什么...

  • 主要内容:对无序数组的查询,对有序数组的查询在实际开发中,经常需要查询数组中的元素。例如,学校为每位同学分配了一个唯一的编号,现在有一个数组,保存了实验班所有同学的编号信息,如果有家长想知道他的孩子是否进入了实验班,只要提供孩子的编号就可以,如果编号和数组中的某个元素相等,就进入了实验班,否则就没进入。 不幸的是,C语言标准库没有提供与数组查询相关的函数,所以我们只能自己编写代码。 对无序数组的查询 所谓无序数组,就是数组元素的排列没有规律

  • 假设我有这样的html: 我只想获得之前的 。有没有办法用JSOUP做到这一点呢?我知道我可以把所有的宠物都弄成这样: 但这也包括额外的宠物。我想知道我是只能选择上面的宠物还是只是删除下面的宠物然后使用那个代码?