如何使用Selenium将标签字符输入textarea?

时间:2015-05-29 09:14:33

标签: java html selenium

我正在使用Selenium Web Driver(Java,Chrome浏览器)。我想在文本区域中输入制表符。默认情况下,输入制表符会导致下一个输入被聚焦,但我实际上希望将制表符打印到 textarea 输入中。

由于我的测试是在Windows机器上运行的,我以为我可以使用alt代码进入选项卡。 IE

  1. Hold alt
  2. 按0
  3. 按9
  4. 发布alt
  5. 但我不确定如何使用 WebDriver 以编程方式执行此操作。我尝试了以下方法:

    WebElement myTextArea = driver.findElement(By.cssSelector("form textarea"));
    
    myTextArea.sendKeys("before_tab", Keys.chord(Keys.ALT, Keys.NUMPAD0, Keys.NUMPAD9), "after_tab");
    

    ...但它只是打印了#34; before_tabafter_tab"进入文本区域,我猜是因为它同时按下ALT,0和9,并且不会转换为可打印字符。

    我还会考虑通过键盘快捷键或上下文菜单粘贴(这实际上更接近我希望用户将文本输入 textarea ),但我无法看到将文本放在剪贴板上以供selenium驱动的浏览器访问。

    任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:2)

您可以使用以下 Java 代码:

Robot rb = new Robot();

StringSelection textToPaste= new StringSelection("  ");//make sure u enter tab here

Toolkit.getDefaultToolkit().getSystemClipboard().setContents(textToPaste, null);

rb.keyPress(KeyEvent.VK_CONTROL);    
rb.keyPress(KeyEvent.VK_V);    
rb.keyRelease(KeyEvent.VK_V);    
rb.keyRelease(KeyEvent.VK_CONTROL);

答案 1 :(得分:0)

您是否尝试过使用机器人

专注于文字区域

driver.findElement(By.cssSelector("form textarea")).sendKeys("");

使用机器人类在文本区域中输入键

Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_0);
robot.keyPress(KeyEvent.VK_9);
robot.keyRelease(KeyEvent.VK_0);
robot.keyRelease(KeyEvent.VK_9);
robot.keyRelease(KeyEvent.VK_ALT);

希望这可以帮助你...

答案 2 :(得分:-1)

您可以按如下方式使用Windows剪贴板:

 string text = "my text and tab" + Keys.Tab;
 Clipboard.SetText(text);

然后,您可以使用Keys.Control + "V"将其粘贴到您的控件中。