2013-06-28 3 views
0

Я тестирую приложение с большим количеством таблиц. каждая ячейка в таблице содержит множество вещей, которые могут мне понадобиться, такие как идентификатор для ввода текста, идентификатор для раскрывающегося списка, флажки и т. д. Я использую решение, которое я нашел here, но у меня так много элементов, что это болото, и на таблице с 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, которые удвоили скорость, но на этих больших таблицах все еще очень медленно.

Заранее благодарен!

+0

Какой браузер вы используете? Если вы можете, используйте Chrome, это быстрее, чем Firefox или IE. – LaurentG

+0

Я использую IE и должен придерживаться его, к сожалению. – bbarke

+0

Я нашел решение сейчас. Я использовал 64-разрядную версию IE9. Из того, что я нашел [здесь] (https://groups.google.com/forum/#!msg/selenium-users/lVjGr7ZtrtQ/V3OAX3nEYAMJ), 64-разрядная версия IE не имеет более быстрого движка JavaScript, только 32-разрядный версия. Я изменил свой webdriver, чтобы открыть эту [версию] (http://stackoverflow.com/questions/10595420/webdriver-internetexplorerdriver-standalone-server-for-32-bit-ie-what-is-the) вместо этого, и это работает намного быстрее, чем раньше. Не так быстро, как firefox, хотя ... – bbarke

ответ

0

Я нашел решение сейчас. Я использовал 64-разрядную версию IE9. Из того, что я нашел here, 64-разрядная версия IE не обладает более быстрым движком JavaScript, а только 32-разрядной версией. Я изменил свой WebDriver, чтобы открыть этот файл IEDriverServer.exe version, и он работает в 3 или 4 раза быстрее, чем раньше. Не так быстро, как Firefox.