У меня есть куча кода, написанного для FirefoxDriver. Сейчас немного переписываю код, попутно решил заменить FirefoxDriver на что-нибудь другое (надо запускать код на сервере, где только командная строка).
Столкнулся с такой проблемой (у меня вообще задача нетипичная, я не тестирую, а занимаюсь парсингом форума. Для себя, от нечего делать. Форум на движке phpBB).
У меня есть куча кусков такого рода. Сначала я нахожу список одинаковых элементов:
List<WebElement> list = driver.findElements(By.cssSeelctor("css selector"));
Потом внутри каждого из этих элементов мне надо искать другие элементы:
for (WebElement e : list) {
List<WebElement> anotherList = e.findElements(By.cssSeelctor("another css selector"));
}
Проблема в следующем: если элементов с указанным селектором нет (а их часто нет), то FirefoxDriver и HtmlUnitDriver в этом случае возвращают список нулевого размера. В PhantomJS, если вызываешь метод findElements
объекта PhantomJSDriver
- он тоже возвращает пустой лист (это ОК), а вот когда вызываешь метод findElements
объекта WebElement
- он выбрасывает NoSuchElementException
, а на их обработку уходит колоссальное количество времени (потому что 90%, наверное, всей работы заключается в поиске того, чего часто нет). В итоге код работает в час по чайной ложке - примерно раз в 10 - 20 медленнее, чем FirefoxDriver
.
Кто что может посоветовать? Хотелось бы ускорится.