getText()在sendKeys()之后返回空字符串

时间:2016-09-04 18:52:00

标签: java selenium

我有一个包含以下公共实例变量的类

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

然后我在构造函数中使用页面工厂来在每次使用时初始化它

PageFactory.initElements(driver, this);

在我对此页面的测试用例中,我使用以下代码来测试我发送的文本是否实际上已在字段中设置...

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

我得到空字符串

知道为什么会发生这种情况...我认为如果driver.findElement()直接使用@FindByPageFactory

,它会正常工作

2 个答案:

答案 0 :(得分:2)

要从文本或文本区域等输入框中获取文本,您需要使用getAttribute("value")方法。 getText()适用于div,span等标签。

subtitleInputBox.getAttribute("value");

答案 1 :(得分: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");