4

SeleniumWebドライバーを使用しています。テキストが書かれているテキストエリアがあります。では、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

4 に答える 4

8
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");
于 2012-11-18T15:26:09.583 に答える
2
 WebElement element = driver.findElement(By.xpath("textBox/textarea"));
 String previousText = element.getAttribute("value");
 element.clear();
 element.sendKeys("abc" + previousText);
于 2012-11-16T08:12:31.200 に答える
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);
    }
}
于 2012-11-16T08:49:35.100 に答える