当前位置: 首页 > 知识库问答 >
问题:

检查属性是否正确,然后使用Xpath从获取文本

邵旺
2023-03-14

我是使用Xpath的新手,我们使用一个软件来读取excel文档,它创建了一个基于HTML的文档。文档代码如下所示,

代码:

<tr height=17 style='height:12.75pt'>
  <td height=17 class=xl153961 style='height:12.75pt'></td>
  <td colspan=2 class=xl773961 dir=LTR width=124 style='width:93pt'>Stat.No.</td>
  <td colspan=2 class=xl773961 dir=LTR width=184 style='width:138pt'>Origin</td>
  <td colspan=3 class=xl773961 dir=LTR width=205 style='width:154pt'>Description</td>
  <td class=xl773961 dir=LTR width=67 style='width:50pt'>Qty</td>
  <td class=xl773961 dir=LTR width=56 style='width:42pt'>kg tot</td>
  <td colspan=2 class=xl773961 dir=LTR width=88 style='width:66pt'>Price</td>
 </tr>
 <tr height=17 style='height:12.75pt'>
  <td height=17 class=xl153961 style='height:12.75pt'></td>
  <td class=xl153961></td>
  <td class=xl153961></td>
  <td class=xl153961></td>
  <td class=xl153961></td>
  <td colspan=3 class=xl773961 width=205 style='width:154pt'>Outdoor clothes</td>
  <td class=xl783961 width=67 style='width:50pt'>3</td>
  <td class=xl793961 width=56 style='width:42pt'>0,09</td>
  <td colspan=2 class=xl793961 width=88 style='width:66pt'>55,50</td>
 </tr>
 <tr height=17 style='height:12.75pt'>
  <td height=17 class=xl153961 style='height:12.75pt'></td>
  <td colspan=2 class=xl773961 width=124 style='width:93pt'>42032990</td>
  <td colspan=2 class=xl773961 width=184 style='width:138pt'>China</td>
  <td colspan=3 class=xl773961 width=205 style='width:154pt'>Outdoor clothes</td>
  <td class=xl783961 width=67 style='width:50pt'>1</td>
  <td class=xl793961 width=56 style='width:42pt'>0,17</td>
  <td colspan=2 class=xl793961 width=88 style='width:66pt'>134,95</td>
 </tr>
 <tr height=17 style='height:12.75pt'>
  <td height=17 class=xl153961 style='height:12.75pt'></td>
  <td colspan=2 class=xl773961 width=124 style='width:93pt'>61033300</td>
  <td colspan=2 class=xl773961 width=184 style='width:138pt'>China</td>
  <td colspan=3 class=xl773961 width=205 style='width:154pt'>Outdoor clothes</td>
  <td class=xl783961 width=67 style='width:50pt'>1</td>
  <td class=xl793961 width=56 style='width:42pt'>0,60</td>
  <td colspan=2 class=xl793961 width=88 style='width:66pt'>110,31</td>
 </tr>

我创建了一个Xpath,它将查看给定的文本字符串,然后提取数据值。此外,该软件使用Xpath 1.0。

/html/body/div/table/tr[position() > count(/html/body/div/table/tr[contains(.,'Description')]/preceding-sibling::tr)+1]/td[position() = count(/html/body/div/table/tr/td[contains(.,'Description')]/preceding-sibling::td)+1]

<tr height=17 style='height:12.75pt'>
<td height=17 class=xl153961 style='height:12.75pt'></td>
<td class=xl153961></td>
<td class=xl153961></td>
<td class=xl153961></td>
<td class=xl153961></td>
<td colspan=3 class=xl773961 width=205 style='width:154pt'>Outdoor clothes</td>
<td class=xl783961 width=67 style='width:50pt'>3</td>
<td class=xl793961 width=56 style='width:42pt'>0,09</td>
<td colspan=2 class=xl793961 width=88 style='width:66pt'>55,50</td>
</tr>

代码:

/html/body/div/table/tr[position() > count(/html/body/div/table/tr[contains(.,'Description')]/preceding-sibling::tr)+1]/td [concat(substring(position() = count(/html/body/div/table/tr/td[contains(.,'Description')/preceding-sibling::td)+1),1,number(substring-after(/*/td, 'colspan') * string-length($1))]

然后我尝试检查colspan属性,它等于3。我尝试了下面的代码,我在这里找到的,没有一个工作。

代码:

string(//*[@colspan="3"])
/table/tr/td[@colspan=3]/following-sibling::td[1]
//tr/td[@colspan=3]/following-sibling::text()[1]
/table/tr/td[text()='One']/following-sibling::td[1]

我需要弄清楚这件事,但我现在被困住了。有没有可能有人帮我解脱一下或者给我一些该怎么做的建议。

共有1个答案

毋胜涝
2023-03-14

如果我没有理解错,这个xpath将帮助您定位非空元素,对吗?

//td[@style and (text() != '')] 
 类似资料:
  • 检索给定节点resp的所有属性名(而不是属性值!)的Xpath表达式看起来如何。xml标签? 假设以下XML文档: Xpath//title/@*会选择“eng,fr,easyreading”,但哪个Xpath会选择“lang,lang,type”?

  • 问题内容: 我正在为HTML5游戏编写测试,我想检查音频是否正在加载并正确启动。 有没有一种方法可以使用Selenium进行检查?还是我需要在操作系统级别执行此操作? 问题答案: 我总是用“ 告诉我一个人如何检查…… ” 来回答这样的问题。答案是这种情况是听音频,看看是否应该播放。您将无法使计算机轻松做到这一点。

  • 我使用nightwatchjs作为测试工具,需要测试注入的脚本是否正确显示在页面上,以及脚本是否正确填充。 因此,下面的脚本html将被测试(以确保它被正确显示): 所以首先,我想测试这个脚本是否出现在页面上,但是以一种尽可能不脆弱的方式。我可以测试 /html/head/script[13]/text(),但这真的很脆弱,远非理想。 脚本中有没有什么我可以参考的东西,这样测试就不会那么脆弱了?

  • 问题内容: 我有一堆字符,想删除所有不是’#’‘的字符。“ E”和“ G”。 我试图用这个: 但是遇到了不兼容类型的问题。 问题答案:

  • null 什么做法更好,更“真实”?我喜欢第一个,但再次,不确定我该如何选择Epsilon。

  • 我正在自动化一些涉及android keytool和jarsigner的东西。该工具获取一个密钥存储库、密钥存储库的密码、别名和别名/密钥的密码,我正在尝试找到一种方法来显式检查为别名/密钥提供的密码是否正确。 有什么想法吗?而且,我需要在没有要签名的jar文件的情况下检查它--在我的上下文中获取该文件是很长的,所以我希望早一点而不是晚一点中止。