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 命令,这些命令使速度翻了一番,但在那些较大的桌子上仍然很慢。

提前致谢!

4

1 回答 1

0

我现在找到了解决方案。我使用的是 IE9 64 位版本。从我在这里找到的 64 位版本的 IE 没有更快的 JavaScript 引擎,只有 32 位版本。我更改了我的 WebDriver 以打开那个 IEDriverServer.exe版本,它的运行速度比以前快了 3 或 4 倍。然而,它几乎没有 Firefox 快。

于 2013-07-18T18:07:32.557 回答