selenium - 从动态 Web 表中获取基于列和行名称的特定值,其中列和行的位置也是动态的
问题描述
我必须根据列名和行名打印一个特定的值。问题是列位置和行位置每次都在变化。并且表数据是动态的,值是不断变化的。所有值都不是恒定的,我的动态 web 表是. 我想要 2001 年 4 月的具体值。
解决方案
这是基于所附屏幕截图的示例表。
<html>
<table id='table1' border=" 1px solid black">
<tr>
<th>Month/Year</th>
<th>2003</th>
<th>2004</th>
<th>2001</th>
<th>2005</th>
<th>2002</th>
</tr>
<tr>
<td>May</td>
<td>122</td>
<td>84</td>
<td>7777</td>
<td>12</td>
<td>122</td>
</tr>
<tr>
<td>Feb</td>
<td>45</td>
<td>445</td>
<td>565</td>
<td>222</td>
<td>122</td>
</tr>
<tr>
<td>April</td>
<td>3556</td>
<td>212</td>
<td>21</td>
<td>1546</td>
<td>855</td>
</tr>
</table>
<span>-----------------------------------------------</span>
<table id='table2' border=" 1px solid black">
<tr>
<th>Month/Year</th>
<th>2002</th>
<th>2001</th>
<th>2003</th>
<th>2004</th>
<th>2005</th>
</tr>
<tr>
<td>April</td>
<td>120</td>
<td>243</td>
<td>221</td>
<td>21</td>
<td>65</td>
</tr>
<tr>
<td>May</td>
<td>96</td>
<td>146</td>
<td>454</td>
<td>452</td>
<td>4566</td>
</tr>
<tr>
<td>March</td>
<td>788</td>
<td>139</td>
<td>10</td>
<td>1001</td>
<td>013</td>
</tr>
<tr>
<td>Feb</td>
<td>552</td>
<td>1245</td>
<td>545</td>
<td>41</td>
<td>41</td>
</tr>
</table>
</html>
下面是从表 1 中获取“April/2001”值的 xpath。
//table[@id='table1']//td[position()=count(//th[normalize-space(.)='Month/Year']/preceding-sibling::th)+1 and normalize-space(.)='April']/ancestor::tr//td[position()=count(//table[@id='table1']//th[normalize-space(.)='2001']/preceding-sibling::th)+1]
和 xpath 从表 2 中获取“April/2001”的值。
//table[@id='table2']//td[position()=count(//th[normalize-space(.)='Month/Year']/preceding-sibling::th)+1 and normalize-space(.)='April']/ancestor::tr//td[position()=count(//table[@id='table2']//th[normalize-space(.)='2001']/preceding-sibling::th)+1]
上面 2 个 xpath 之间的唯一区别是 table id **//table[@id='tableX**
。请根据您的应用程序值更新表定位器。让我知道这是否有帮助。
推荐阅读
- uitextview - IGListKit 和调整 UITextView
- ios - 如何为多个目标使用一个 XCTestCase 类
- apache-nifi - 拆分文本处理器不拆分我的输入文件
- python - 如何使用 Python libcloud 访问 Google 存储桶中的文件夹“/”?
- tomcat - 如何在 Tomcat 的 Cookie 处理器中设置 SameSite Cookie?
- scala - Scala 集合未在简单的 Akka Streams 操作中实现
- javascript - RxJs 主题未在生产环境中触发订阅,但可用于开发和测试
- uwp - 从 Microsoft Store 安装应用程序会使用缓存的开发应用程序
- reactjs - 如何使用 React 将 jsx 存储到变量中?
- c - 为什么我在以下代码中出现分段错误?