Selenium 硒体文本提取

Selenium 硒体文本提取,selenium,webdriver,Selenium,Webdriver,我尝试自动化的web应用程序有一个诊断工具,允许ping到网站。它在一个具有表结构的框中提供输出(所有内容都包含在iNA中) 我正在使用SeleniumWebDriver和Java对其进行自动化编程。它的结构是JUnit4测试,并使用WebDriver(不是Selenium RC,而是更新的) 下面是它的外观: <tr> <td style="font-family:Arial;font-size:11px;"></td> </tr> <tr

我尝试自动化的web应用程序有一个诊断工具,允许ping到网站。它在一个具有表结构的框中提供输出(所有内容都包含在iNA中)

我正在使用SeleniumWebDriver和Java对其进行自动化编程。它的结构是JUnit4测试,并使用WebDriver(不是Selenium RC,而是更新的)

下面是它的外观:

<tr>
<td style="font-family:Arial;font-size:11px;"></td>
</tr>
<tr>
<td style="font-family:Arial;font-size:11px;"> </td>
</tr>
<tr>
<td style="font-family:Arial;font-size:11px;">PING ds-any-fp3-real.wa1.b.yahoo.com (98.138.253.109) 56(84) bytes of data.</td>
</tr>
<tr>
<td style="font-family:Arial;font-size:11px;">64 bytes from ir1.fp.vip.ne1.yahoo.com (98.138.253.109): icmp_req=1 ttl=53 time=81.9 ms</td>
</tr>
<tr>
<td style="font-family:Arial;font-size:11px;">64 bytes from ir1.fp.vip.ne1.yahoo.com (98.138.253.109): icmp_req=2 ttl=53 time=148 ms</td>
</tr>
<tr>
<td style="font-family:Arial;font-size:11px;">64 bytes from ir1.fp.vip.ne1.yahoo.com (98.138.253.109): icmp_req=4 ttl=53 time=143 ms</td>
</tr>
<tr>
<td style="font-family:Arial;font-size:11px;"></td>
</tr>
<tr>
<td style="font-family:Arial;font-size:11px;">--- ds-any-fp3-real.wa1.b.yahoo.com ping statistics ---</td>
</tr>
<tr>
<td style="font-family:Arial;font-size:11px;">5 packets transmitted, 3 received, 40% packet loss, time 4012ms</td>
</tr>
<tr>
<td style="font-family:Arial;font-size:11px;">rtt min/avg/max/mdev = 81.917/124.763/148.373/30.349 ms</td>
</tr>
<tr>
<td style="font-family:Arial;font-size:11px;"></td>
</tr>
</tbody>
我需要使用SeleniumWebDriver解析此文本,并通过JUnit测试,如果ping成功(无论数据包是否丢失),我还需要提取一个IP地址

是否有任何方法可以提取页面源的特定部分(可能以某种复杂的方式使用driver.getPageSource(),或者通过xpath查找这一部分,然后调用getText()),然后解析它以获取IP?我尝试的方式如下:

String IP = "";
String textToParse = //Here, we should have a way to get the string that would contain IP.
String tokenSeparators = "()"; // since our IP is enclosed by brackets 
String tokens[] = textToParse.split(tokenSeparators);
for(int i = 0; i<tokens.length; i++){
    if(tokens[i].matches("^[1-9]?[1-9]?[1-9]?\\.[1-9]?[1-9]?[1-9]?\\.[1-9]?[1-9]?[1-9]?\\.[1-9]?[1-9]?[1-9]?$")){ // IP regexp
         IP = tokens[i]
    }

}
String IP=”“;
String textToParse=//在这里,我们应该有一种方法来获取包含IP的字符串。
字符串标记分隔符=“()”;//因为我们的IP是用括号括起来的
字符串标记[]=textToParse.split(标记分隔符);
对于(int i=0;i
List allTds=driver.findElements)(By.cssSelector(“td[style*='font-family:Arial;font-size:11px;']);
String allTdText[]=新字符串[allTds.size()];
int i=0;
for(WebElement-eachTd:allTds)
{
allTdText[i++]=eachTd.getText();
}
通过使用上述逻辑,您将获得字符串数组中的所有td标记数据。然后根据需要解析每个单独的arraye元素

示例

字符串a=“来自ir1.fp.vip.ne1.yahoo.com(98.138.253.109)的64字节:icmp_req=1 ttl=53 time=81.9 ms”

用于单独获取IP地址

System.out.println(a.substring(a.indexOf(“”+1,a.indexOf(“”))


它将返回98.138.253.109

这确实是一个解决问题的好方法,将尝试一下。
String IP = "";
String textToParse = //Here, we should have a way to get the string that would contain IP.
String tokenSeparators = "()"; // since our IP is enclosed by brackets 
String tokens[] = textToParse.split(tokenSeparators);
for(int i = 0; i<tokens.length; i++){
    if(tokens[i].matches("^[1-9]?[1-9]?[1-9]?\\.[1-9]?[1-9]?[1-9]?\\.[1-9]?[1-9]?[1-9]?\\.[1-9]?[1-9]?[1-9]?$")){ // IP regexp
         IP = tokens[i]
    }

}
List<WebElement> allTds=driver.findElements(By.cssSelector("td[style*='font-family:Arial;font-size:11px;']");
String allTdText[]=new String[allTds.size()];
int i=0;
for(WebElement eachTd:allTds)
 {
    allTdText[i++]=eachTd.getText();
 }