【问题标题】:How to use Selenium to enter a tab character into a textarea?如何使用 Selenium 在文本区域中输入制表符?
【发布时间】:2015-08-12 02:10:06
【问题描述】:

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

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

  1. 按住 alt
  2. 按0
  3. 按 9
  4. 释放 alt

但我不确定如何使用 WebDriver 以编程方式执行此操作。我尝试了以下方法:

WebElement myTextArea = driver.findElement(By.cssSelector("form textarea"));

myTextArea.sendKeys("before_tab", Keys.chord(Keys.ALT, Keys.NUMPAD0, Keys.NUMPAD9), "after_tab");

...但它只是将“before_tabafter_tab”打印到文本区域,我猜是因为它同时按下了 ALT、0 和 9,这不会转换为可打印的字符。

我也会考虑通过键盘快捷键或上下文菜单进行粘贴(这实际上更接近我希望用户在 textarea 中输入文本的方式),但我不知道如何放置将文本放到剪贴板上,供 selenium 驱动的浏览器访问。

任何帮助将不胜感激。

【问题讨论】:

标签: java html selenium


【解决方案1】:

您可以使用以下 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);

【讨论】:

  • 谢谢。我没有使用机器人类,但您的回答告诉我如何将文本放到剪贴板上,这对我有用。
【解决方案2】:

您是否尝试过使用机器人

关注文本区域

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

希望对你有帮助...

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

    • 这会将 Enum 转换为字符串,从而生成“我的文本和 tabTab”
    猜你喜欢
    • 1970-01-01
    • 2016-08-16
    • 1970-01-01
    • 2021-06-27
    • 2018-04-22
    • 2012-08-26
    • 2012-02-06
    • 2011-09-14
    • 2018-01-13
    相关资源
    最近更新 更多