У меня была такая же проблема;небольшое копание привело меня к этому:
https://groups.google.com/forum/#!msg/webdriver/fRb_1QOr3wg/wzUsW3Ll6bgJ
HTMLUnitDriver (и, очевидно, FirefoxDriver) вернет пустые строки, когда вы попытаетесь вызвать WebElement # getText () для элементов, чье свойство CSS 'display'установлено в' none '.
Вот мое решение:
public void assertContainsText(final By by, final String value) {
browser.waitTillElementPresent(by);
Boolean result = new WebDriverWait(getWebDriver(),Browser.DEFAULT_WAIT_TIMEOUT_SECONDS).until(new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(WebDriver arg0) {
WebElement elem = arg0.findElement(by);
String text = "";
if (elem.isDisplayed()) {
text = elem.getText();
} else {
//have to use JavaScript because HtmlUnit will return empty string for a hidden element's text
text = (String) executeScript("return arguments[0].innerHTML", elem);
text = text.replace("<BR></BR>", "\n"); //scary
}
return text.contains(value);
}
});
Assert.assertTrue(by.toString() + " contains value ["+value+"]", result);
}
Да, это безобразно, как грех.И обратите внимание на text.replace ("
") - это потому, что теги HTML не экранируются при извлечении необработанных данных.WebDriver будет прекрасно «отменять» это, если вы вызовете #getText () для элемента.
Я сейчас обратился к нашим ИТ-специалистам с просьбой установить X-Windows на наших CI-серверах, чтобы мы могли запуститьFirefoxDriver.У нас не было ничего, кроме проблем с HTMLUnitDriver, и загрузка невероятно медленная.