2016-09-04 5 views
1

У меня есть класс со следующим публичным переменным экземпляромGetText() возвращает пустую строку после SendKeys()

@FindBy(id="titleInput") 
public WebElement titleInputBox; 

Затем я использую страницы завод в конструкторе инициализировать его на каждом использовании

PageFactory.initElements(driver, this); 

в моем тесте на этой странице, я использую следующий код, чтобы проверить, является ли текст, который я послал фактически получать устанавливается в поле ...

subtitleInputBox.sendKeys("Test"); 
subtitleInputBox.getText(); 

и я получаю пустую строку

любой идеи, почему это происходит ... Я думаю, что это работает хорошо, если driver.findElement() используется непосредственно без @FindBy и PageFactory

ответ

0

На самом деле WebElement.getText() возвращает видимый (т.е. не скрыт CSS) InnerText этого элемента, включая вложенные элементы, без какого-либо ведущего или конечные пробельные символы в то время как вам требуется текст атрибута значения элемента ввода.

Элемент поля ввода FYI хранит текст, который вы пытаетесь установить с помощью WebElement.sendKeys(), в их имя атрибута value вместо внутреннего текста.

Итак, вы должны попробовать использовать WebElement.getAttribute(), который будет использоваться для получения значения данного атрибута элемента.

Здесь необходимо реализовать WebDriverWait также, чтобы определить, был ли успешно установить значение элемента или не используя ExpectedConditions.textToBePresentInElementValue, как показано ниже: -

subtitleInputBox.sendKeys("Test"); 

//Now wait until value has been set into element 
new WebDriverWait(driver, 10).until(ExpectedConditions.textToBePresentInElementValue(subtitleInputBox, "Test")); 

//Now get the element value 
subtitleInputBox.getAttribute("value"); 
2

Чтобы получить текст из входного ящика, как текст или текстовое поле вам необходимо использовать метод getAttribute("value"). getText() работы по тэгам как DIV, охватывают и т.д. и т.п.

subtitleInputBox.getAttribute("value"); 
Смежные вопросы