Selenium:如何将数据添加到文本框或文本区域

时间:2012-11-16 08:05:02

标签: selenium selenium-webdriver

我正在使用Selenium Web驱动程序。我有一个文本区域,其中写入了一些文本。现在我如何在其中添加一些text / html或在特定位置插入数据?

以下代码附加到文本区域/文本框

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);

请帮忙......

4 个答案:

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

答案 1 :(得分:2)

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

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

答案 3 :(得分:0)

htmlContent = driver.find_element_by_id("wp-editor-area")
htmlContent.sendKeys(Keys.CONTROL, Keys.HOME)
htmlContent.sendKeys("The Content You WANT!")