0

キーワードを入力して結果を HTML テーブルの形式で取得する Web アプリケーションをテストしています。後で別のリストと比較するために、このテーブルからテキストを抽出してリストに保存したいと考えています。

検索を開始し、テーブルをリストに保存するコードは次のとおりです。

@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)

WORKFLOW 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 ランスメントが 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 に答える