剪贴板处于循环状态,仅在第一时间获得文本

问题描述 投票:0回答:1

我有一个错误,但我不明白。我没有例外。

我必须使用机器人复制文本。

// mark the text
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_A);
robot.delay(1000);
robot.keyRelease(KeyEvent.VK_A);
robot.keyRelease(KeyEvent.VK_CONTROL);


// robot copy the text
robot.keyPress((KeyEvent.VK_CONTROL));
robot.keyPress((KeyEvent.VK_C));
robot.delay(1000);
robot.keyRelease((KeyEvent.VK_C));
robot.keyRelease((KeyEvent.VK_CONTROL));

然后我通过剪贴板获得文本

txt = (String) Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.stringFlavor);

此后,我想将文本设置为剪贴板,以便可以使用机器人再次将其放置在文本字段中。

StringSelection stringSelection = new StringSelection(txt);
clipboard.setContents(stringSelection, stringSelection);


// robot mark the hole text
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_A);
robot.delay(1000);
robot.keyRelease(KeyEvent.VK_A);
robot.keyRelease(KeyEvent.VK_CONTROL);


// robot put the text in
robot.keyPress((KeyEvent.VK_CONTROL));
robot.keyPress((KeyEvent.VK_V));
robot.delay(1000);
robot.keyRelease((KeyEvent.VK_V));
robot.keyRelease((KeyEvent.VK_CONTROL));

这就是循环中的一切

 while (j < liUnderElementList.size()) {}

第一次按预期运行,但是在第二遍,我得到了第一个复制的文本,而不是新文本。但是我的剪贴板中是新文本。

如果我等待

TimeUnit.SECONDS.sleep(2)

没有任何变化。

任何人都可以帮助我吗?

我会非常感谢。

java selenium while-loop clipboard robot
1个回答
0
投票

似乎键的顺序与您的演奏方式有关。发布事件应来自最后一个事件。使用以下一项:

robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_A);
robot.delay(1000);
robot.keyRelease(KeyEvent.VK_A);
robot.keyRelease(KeyEvent.VK_CONTROL);
© www.soinside.com 2019 - 2024. All rights reserved.