我正在使用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);
请帮忙......
答案 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!")