При запуске вашего кода у меня возникла та же проблема.
Вероятно, это связано с отключением JavaScript по умолчанию в HtmlunitDriver. Похоже, что ваш тест пытается найти элемент до полной загрузки страницы.
В разделе «Javascript в HtmlUnitDriver» вики-страницы HtmlUnitDriver они объясняют это и то, как это влияет как на JavaScript, так и на DOM.
Мне удалось заставить ваш код работать двумя способами. Первый - добавить ожидание присутствия элемента с именем «q»:
driver.get("http://www.google.com");
Wait<WebDriver> wait = new WebDriverWait(driver, 5);
ExpectedCondition<WebElement> condition =
new ExpectedCondition<WebElement>() {
@Override
public WebElement apply(WebDriver driver) {
return driver.findElement(By.name("q"));
}
};
wait.until(condition);
WebElement element = driver.findElement(By.name("q"));
Другое - включение javascript после создания HtmlUnitDriver:
HtmlUnitDriver driver = new HtmlUnitDriver();
driver.setJavascriptEnabled(true);