簡體   English   中英

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

[英]getText() returns empty string after sendKeys()

我有一個帶有以下公共實例變量的類

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

然后我在構造函數中使用頁面工廠在每次使用時對其進行初始化

PageFactory.initElements(driver, this);

在此頁面的測試用例中,我使用以下代碼來測試發送的文本是否確實在字段中設置了...

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

我得到空字符串

任何想法為什么會發生...我認為如果在沒有@FindByPageFactory情況下直接使用driver.findElement()PageFactory

要從諸如文本或textarea之類的輸入框中獲取文本,您需要使用getAttribute("value")方法。 getText()適用於div,span等標簽。

subtitleInputBox.getAttribute("value");

實際上,當您需要輸入框元素值屬性文本時, WebElement.getText()返回此元素 (包括子元素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");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM