我有一个包含以下公共实例变量的类
@FindBy(id="titleInput")
public WebElement titleInputBox;
然后我在构造函数中使用页面工厂来在每次使用时初始化它
PageFactory.initElements(driver, this);
在我对此页面的测试用例中,我使用以下代码来测试我发送的文本是否实际上已在字段中设置...
subtitleInputBox.sendKeys("Test");
subtitleInputBox.getText();
我得到空字符串
知道为什么会发生这种情况...我认为如果driver.findElement()
直接使用@FindBy
和PageFactory
答案 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");