0

多くのテーブルを使用してアプリケーションをテストしています。テーブル内の各セルには、テキストを入力するための ID、ドロップダウンの ID、チェックボックスなど、必要になる可能性のあるさまざまなものが含まれています。ここで見つけたソリューションを使用していますが、非常に多くの要素があり、これが行き詰まり、5 行 21 列のテーブルでは、必要なすべてのデータを取得するのに少なくとも 120 秒かかります。

ここに私が使用しているコードがあります

String[] additInfo = {"name", "id", "value"};

String firstClassName = "tableClassName";
String cssSelector = "tbody tr";

String additInfoName = additInfo[0];

int rowNum, colNum;
rowNum = 0;
WebElement table = driver.findElement(By.className(firstClassName));
List<WebElement> row = table.findElements(By.cssSelector(cssSelector));
print.ln("# of rows: " + row.size());

for (WebElement rowElement : row) {

 System.out.println("get row elms");
  List<WebElement> column = rowElement.findElements(By.tagName("td"));
  System.out.println("number of col: " + column.size());

  colNum = 0;
  for (WebElement colElement : column) {
    String tableText = colElement.getText();
    System.out.println("row # " + rowNum + ", col # " + colNum + " text: " + tableText);

    WebElement nestedElm;

    System.out.println("Get additional Info for " + additInfoName);
    String infoUnderTag = "class";
    nestedElm = colElement.findElement(By.tagName(infoUnderTag));

    for (int i = 1; i < additInfo.length; i++) {
      String attribute = nestedElm.getAttribute(additInfo[i]);
      System.out.println("\t" + additInfo[i] + ": " + attribute);
      
    }
    colNum++;

  } //end Elements

  rowNum++;
} //end rows

これをスピードアップする方法はありますか?不要な findElements コマンドをいくつか削除して速度を 2 倍にしましたが、これらの大きなテーブルでは依然として非常に低速です。

前もって感謝します!

4

1 に答える 1