0

我正在测试一个 Web 应用程序,在其中输入关键字并以 HTML 表的形式获得结果我想从该表中提取一些文本并将其存储到一个列表中,以便稍后与另一个列表进行比较:

这是我启动搜索并将表存储在列表中的代码:

@Parameters({"keyword" , })
@Test
private void srch(String keyword ) throws JsonParseException, JsonMappingException,      MalformedURLException, IOException  {

    driver.get(TestURL);
      WebElement input1 = driver.findElement(By.xpath("html/body/div[1]/div/div[2]/div/form/input[1]"));
      input1.sendKeys("guest");
      WebElement input2 = driver.findElement(By.xpath("html/body/div[1]/div/div[2]/div/form/input[2]"));
      input2.sendKeys("guest");
      WebElement btn = driver.findElement(By.xpath("html/body/div[1]/div/div[2]/div/form/button"));
      btn.click();
      WebElement w1 = driver.findElement(By.xpath("html/body/header/nav/div[1]/form/div/input"));
      w1.sendKeys(keyword);
      WebElement w2 = driver.findElement(By.xpath("(//button[@type='button'])[2]"));
      w2.click();
      List<WebElement> resultsDiv = driver.findElements(By.xpath("html/body/div[1]/div[2]/div/div/div[1]/table"));
          System.out.println(resultsDiv.size());
        for (int i=0; i<resultsDiv.size(); i++) {
            System.out.println(i+1 + ". " + resultsDiv.get(i).getText());




      }


}

我正在添加 system.out.println 以查看我从表中得到了什么。

这是我的表结构:

HTML 代码:

 <table class="table table-striped table-hover table-condensed table-bordered">
 <tbody>
 <!-- ngRepeat: object in objects -->
<tr class="ng-scope" ng-repeat="object in objects">  
<td>
<a target="_blank" href="#/en/object/TASK|TSK(IAM720JUA5)(000)|BIST_CE891">
<b class="ng-binding">TSK(IAM720JUA5)(000)</b>
</a>
<p style="font-size:11px;">

</td>
</tr>

实际网页显示

TSK(IAM720JUA5)(000)

JOB IAM720JUA5|000Chargement des OR CE891 PSIEP23P Flux 5 位置:BIST_CE891 名称:TSK

我想得到的只是 TSK(IAM720JUA5)(000) 部分。

但是我当前的代码显示:

1 1. 1 1. 1 1. 1 1. 1 1. 1 1. TSK(ARS090J)(000)(ARS090JN30)(000)

工作流程 ARS090J|000 Arret et redemarrage des services WEB /

位置:RARS_APP02 名称:TSK 1 1.1 1.1 1.1 1.TSK(Z63700J)(000)(Z63700JU10)(000)

WORKFLOW Z63700J|000 Lancement rebonds CFT Z63

位置:RZ63_ECH01 名称:TSK 1 1. 1 1. 1 1. 1 1. 1 1. 1 1. 1 1. 1 1. 1 1.

我知道我必须更改循环内的代码,但不知道如何继续。

谢谢

4

1 回答 1

0

我终于让它工作了:

@Test
private void srch() throws MalformedURLException, IOException  {


         driver.get(TestURL);
         WebElement input1 = driver.findElement(By.id("login_form_user_input"));
         input1.sendKeys("guest");
         WebElement input2 = driver.findElement(By.id("login_form_password_input"));
         input2.sendKeys("guest");
         WebElement btn = driver.findElement(By.id("login_form_signin_button"));
         btn.click();
         WebElement w1 = driver.findElement(By.id("header_search_text_field"));
         w1.sendKeys("tsk");
         WebElement srch = driver.findElement(By.id("header_search_button"));
         srch.click();
         WebDriverWait wait= new WebDriverWait(driver,20 );
         wait.until(ExpectedConditions.visibilityOfElementLocated(By.tagName("td")));
         WebElement table = driver.findElement(By.id("search_results_table"));
         List <WebElement> rst = table.findElements(By.tagName("b"));
         for (int i=0 ; i< rst.size(); i++)
         {
             System.out.println(rst.get(i).getText());
         }







      }
于 2013-11-21T14:32:19.023 回答