如何使用java从HTML获取数据(声明号和状态)

时间:2017-12-13 07:02:29

标签: java selenium xpath selenium-webdriver

在我的申请中,我提交了一份索赔。它生成了索赔详细信息以及索赔号和状态。我需要从索赔详情中提取索赔号状态

包含声明号和状态的表的HTML代码:

<div id="claim-num-success" style="width:50%; margin:0 auto; padding:25px; background:none; border:1px solid #d3d3d3; line-height:24px;"> <b>Service Name:</b> 7,500 MILES - NON-TURBO ENGINE
  <br> <b>Claim Number:</b> 02923240
  <br> <b>R/O Number:</b> 12000
  <br> <b>R/O Date:</b> 12/13/2017
  <br> <b>Claim Amount:</b> $40.00
  <br> <b>Status:</b> APPROVED
  <br> 
</div>

1 个答案:

答案 0 :(得分:3)

在这里你可以使用xpath下面的值来提取:

//div[@id='claim-num-success']/b[text()='Claim Number:']/following-sibling::text()[1]
  

//div[@id='claim-num-success']/b[text()='Status:']/following-sibling::text()[1]

但Selenium不允许您使用xpath中的文本节点定位元素。因此,您可以使用JavascriptExecutor来评估xpath并使用文本节点定位元素。

这就是你如何完全满足你的要求:

JavascriptExecutor js = (JavascriptExecutor)driver;
Object claimNo= js.executeScript("var value = document.evaluate(\"//div[@id='claim-num-success']/b[text()='Claim Number:']/following-sibling::text()[1]\",document, null, XPathResult.STRING_TYPE, null ); return value.stringValue;");
System.out.println("Claim Number : "+ claimNo.toString());

Object Status= js.executeScript("var value = document.evaluate(\"//div[@id='claim-num-success']/b[text()='Status:']/following-sibling::text()[1]\",document, null, XPathResult.STRING_TYPE, null ); return value.stringValue;");
System.out.println("Status : "+ Status.toString());