Я тестирую приложение с большим количеством таблиц. каждая ячейка в таблице содержит множество вещей, которые могут мне понадобиться, такие как идентификатор для ввода текста, идентификатор для раскрывающегося списка, флажки и т. д. Я использую решение, которое я нашел 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, которые удвоили скорость, но на этих больших таблицах все еще очень медленно.
Заранее благодарен!
Какой браузер вы используете? Если вы можете, используйте Chrome, это быстрее, чем Firefox или IE. – LaurentG
Я использую IE и должен придерживаться его, к сожалению. – bbarke
Я нашел решение сейчас. Я использовал 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