我正在使用Selenium Web Driver(Java,Chrome浏览器)。我想在文本区域中输入制表符。默认情况下,输入制表符会导致下一个输入被聚焦,但我实际上希望将制表符打印到 textarea 输入中。
由于我的测试是在Windows机器上运行的,我以为我可以使用alt代码进入选项卡。 IE
但我不确定如何使用 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驱动的浏览器访问。
任何帮助都将不胜感激。
答案 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"
将其粘贴到您的控件中。