gpt4 book ai didi

ruby - 使用 Capybara 或 Xpath 查找表中给定列中是否存在内容?

转载 作者:数据小太阳 更新时间:2023-10-29 08:05:45 28 4
gpt4 key购买 nike

问题:给定一个表格,一段特定的内容应该出现在与特定标题相同的列中。

澄清:我无法以数字方式测试列位置,或者至少我不能以这种方式对其进行硬编码,因为列数可能会根据各种其他条件而变化,我不想让我的测试变得如此脆弱。

示例:

Name || Phone Number || Address
==============================================================
... || ... || ...
Joe || 555-787-7878 || 42 Nowhere Lane, Mulberry, California
... || ... ||

代码如下所示:

<table>
<tr>
<th>Name</th>
<th>Phone Number</th>
<th>Registered</th>
<th>Address</th>
</tr>
<tr>
...
</tr>

<tr>
<td>Joe</td>
<td>555-377-7347</td>
<td>Yes</td>
<td>42 Nowhere Lane1, Mulberry1, California</td>
</tr>
<tr>
<td>Jerry</td>
<td>555-787-7878</td>
<td>Yes</td>
<td>50 Nowhere Lane, Mulberry, California</td>
</tr>

<tr>
<td>Tom</td>
<td>555-678-0987</td>
<td>No</td>
<td>43 Nowhere Lane2, Mulberry2, California</td>
</tr>
<tr>
...
</tr>
</table>

场景:我想确保正确的地址 (42 Nowhere...) 出现在标题为“地址”的列中。

我该怎么做?

解决方案可能与像样的 xpath 查询一样简单,老实说,也许我什至不需要任何与“ capybara ”特别相关的东西!

我遇到过类似的,但在这里我需要检查“Jerry”是否已注册。请帮助我如何使用 ruby​​/capybara 实现自动化

提前致谢

最佳答案

我认为@Snekse 非常接近。下面是一些已经过测试的表达式。以下返回值为 Addressth 对应的表格单元格:

/table/tr/td[(count(../../tr/th[.='Address']/preceding-sibling::*)+1)]

这可用于获取单元格的值:

42 Nowhere Lane, Mulberry, California

...然后您可以使用它来执行最终测试:

/table/tr/td[(count(../../tr/th[.='Address']/preceding-sibling::*)+1)]
[.='42 Nowhere Lane, Mulberry, California']

如果地址匹配,这将返回单元格本身。它将返回一个空节点集,如果不存在这样的节点,它将在 bool 上下文中评估为 false。

您可能还需要指定要测试的行,这可以通过对表达式的开头稍作修改来完成:

/table/tr[$n]/<rest_of_expression>

...其中 $n 是要选择的行的索引。

关于ruby - 使用 Capybara 或 Xpath 查找表中给定列中是否存在内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7983552/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com