2012-11-16 64 views
4

我正在使用Selenium Web驅動程序。我有一個文本區域,其中寫入了一些文本。現在我怎樣才能預先一些文本/ HTML或插入數據在特定的位置?Selenium:如何將數據添加到文本框或文本區域

下面的代碼追加它的文本區域/文本框

driver.findElement(By.xpath("textBox/textArea")).sendKeys("abc"); 

即。如果文本區域/文本框包含123.以上的結果將是123abc。但我想要abc123或12abc3

PS:我正在測試「電子郵件答覆」功能。

WebElement element = driver.findElement(By.xpath("textBox/textarea")); 
String previousText = element.getAttribute("value"); 
element.clear(); 
element.sendKeys("abc" + previousText); 

請幫助...

:那麼作爲一個用戶,當您回覆郵件,你不要做複製文本,然後清除所有文字然後複製所有文字書寫新的文字像下面回來後

回答

7
import org.openqa.selenium.Keys; 

... 

WebElement element = driver.findElement(By.xpath("textBox/textarea")); 
element.sendKeys(Keys.HOME + "abc"); 

,或者可以是多行文本區

element.sendKeys(Keys.CONTROL, Keys.HOME); 
element.sendKeys("abc"); 
2
WebElement element = driver.findElement(By.xpath("textBox/textarea")); 
String previousText = element.getAttribute("value"); 
element.clear(); 
element.sendKeys("abc" + previousText); 
+0

感謝安迪。但我不想要這個。我正在測試「電子郵件答覆」功能。所以作爲一個用戶,當你回覆郵件時,你不會複製文本,然後清除所有文本,然後在寫入新文本後複製所有文本 – Bhuvan

+2

@bhuvan在訪問過程中會發生什麼最終結果?我提供的答案完全符合你的要求。如果這不是你想要的,請修改你的問題,詢問你真正想要的是什麼。 – AndyPerfect

+0

問題更新 – Bhuvan

0

您可以通過機器人使用插入文本。
按照我的方式。
我希望這可以幫助你。

public void runScript() { 

    WebElement textarea = driver.findElement(By.id("textarea")); 

    insert(textarea, "abc", 2); 
} 

public void insert(WebElement textElement, String insertText, int offset) { 

    String currentText = textElement.getText(); 
    int len = currentText.length(); 
    if (len < offset) { 
     throw new IllegalArgumentException(String.format("len(%d) < offset(%d)", len, offset)); 
    } 
    Robot robot = null; 
    try { 
     robot = new Robot(); 
    } catch (AWTException e) { 
     e.printStackTrace(); 
    } 
    robot.setAutoDelay(20); 
    // On focus. 
    textElement.click(); 
    // Move cursor for head. 
    type(robot, KeyEvent.VK_CONTROL, KeyEvent.VK_HOME); 
    for (int i = 0; i < offset; i++) { 
     type(robot, KeyEvent.VK_RIGHT); 
    } 
    textElement.sendKeys(insertText); 
} 

public void type(Robot robot, int... keycodes) { 
    for (int keycode : keycodes) { 
     robot.keyPress(keycode); 
    } 
    for (int keycode : keycodes) { 
     robot.keyRelease(keycode); 
    } 
} 
相關問題