Java 使用Robot类和Selenium WebDriver将caps文本发送到文本框

Java 使用Robot类和Selenium WebDriver将caps文本发送到文本框,java,selenium-webdriver,awtrobot,Java,Selenium Webdriver,Awtrobot,如何使用Robot类和Selenium WebDriver将大写文本发送到文本框。您可以按照以下方式使用Robot类将大写文本发送到文本框。 下面我使用Robot类发送字符串OK Robot robot = new Robot(); robot.keyPress(KeyEvent.VK_CAPS_LOCK); robot.keyPress(KeyEvent.VK_O); robot.keyRelease(KeyEvent.VK_O); robot.keyRelease(KeyEvent.VK_

如何使用Robot类和Selenium WebDriver将大写文本发送到文本框。

您可以按照以下方式使用Robot类将大写文本发送到文本框。 下面我使用Robot类发送字符串OK

Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CAPS_LOCK);
robot.keyPress(KeyEvent.VK_O); 
robot.keyRelease(KeyEvent.VK_O);
robot.keyRelease(KeyEvent.VK_CAPS_LOCK);
robot.keyPress(KeyEvent.VK_CAPS_LOCK);
robot.keyPress(KeyEvent.VK_K); 
robot.keyRelease(KeyEvent.VK_K);
robot.keyRelease(KeyEvent.VK_CAPS_LOCK);

您需要做两件事来:

1-首先要将焦点转到文本字段,在其中输入值,如下所示:

2-然后使用“Robot类”将值发送到使用CAPSLOCK或SHIFT键将字母更改为大写的字段

试试这个代码。它用于使用CAPSLOCK发送Google.com搜索字段中的HELLO all caps:

或者您也可以尝试使用SHIFT,如下所示:

    Robot robot = new Robot();
    robot.keyPress(KeyEvent.VK_SHIFT);
    robot.keyPress(KeyEvent.VK_H);
    robot.keyRelease(KeyEvent.VK_H);
    robot.keyPress(KeyEvent.VK_E);
    robot.keyRelease(KeyEvent.VK_E);
    robot.keyPress(KeyEvent.VK_L);
    robot.keyRelease(KeyEvent.VK_L);
    robot.keyPress(KeyEvent.VK_L);
    robot.keyRelease(KeyEvent.VK_L);
    robot.keyPress(KeyEvent.VK_O);
    robot.keyRelease(KeyEvent.VK_O);
    robot.keyRelease(KeyEvent.VK_SHIFT);
//First of all declare the method setClipboardData as below:
public void setClipboardData(String string) {
        StringSelection stringSelection = new StringSelection(string);
        Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, null);
    }
//Call the method setClipboardData and write other Robot code:
driver.get("https://www.google.com/");
        driver.findElement(By.id("lst-ib")).clear();
        driver.findElement(By.id("lst-ib")).sendKeys("");

        Robot robot = new Robot();
        setClipboardData("ALL CAPS");
        robot.keyPress(KeyEvent.VK_CONTROL);
        robot.keyPress(KeyEvent.VK_V);
        robot.keyRelease(KeyEvent.VK_V);
        robot.keyRelease(KeyEvent.VK_CONTROL);
        robot.keyPress(KeyEvent.VK_ENTER);
        robot.keyRelease(KeyEvent.VK_ENTER);

这可以通过使用Caps Lock或Shift键来实现,Subh在另一个答案中提到了这一代码

您也可以通过在Java中使用StringSelection来实现这一点。代码如下:

    Robot robot = new Robot();
    robot.keyPress(KeyEvent.VK_SHIFT);
    robot.keyPress(KeyEvent.VK_H);
    robot.keyRelease(KeyEvent.VK_H);
    robot.keyPress(KeyEvent.VK_E);
    robot.keyRelease(KeyEvent.VK_E);
    robot.keyPress(KeyEvent.VK_L);
    robot.keyRelease(KeyEvent.VK_L);
    robot.keyPress(KeyEvent.VK_L);
    robot.keyRelease(KeyEvent.VK_L);
    robot.keyPress(KeyEvent.VK_O);
    robot.keyRelease(KeyEvent.VK_O);
    robot.keyRelease(KeyEvent.VK_SHIFT);
//First of all declare the method setClipboardData as below:
public void setClipboardData(String string) {
        StringSelection stringSelection = new StringSelection(string);
        Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, null);
    }
//Call the method setClipboardData and write other Robot code:
driver.get("https://www.google.com/");
        driver.findElement(By.id("lst-ib")).clear();
        driver.findElement(By.id("lst-ib")).sendKeys("");

        Robot robot = new Robot();
        setClipboardData("ALL CAPS");
        robot.keyPress(KeyEvent.VK_CONTROL);
        robot.keyPress(KeyEvent.VK_V);
        robot.keyRelease(KeyEvent.VK_V);
        robot.keyRelease(KeyEvent.VK_CONTROL);
        robot.keyPress(KeyEvent.VK_ENTER);
        robot.keyRelease(KeyEvent.VK_ENTER);

您好,谢谢您的回复。我们如何将此caps文本输入到文本框中。我尝试了与您建议的相同的方法以及sendKeys,但没有成功。@dev:有效吗?如果不是的话,你能给我看一下你同样的实现吗?这可能真的很混乱,请不要介意。我唯一关注的是使用robot在用户名文本框中获取大写文本。现在,当我启动firefox时,地址栏中的大写文本将被打印出来。但我的目标是将其发送到用户名字段。请提供帮助。对于用户名字段,您必须通过.id、xpath或css方法检测输入框,并使用sendKeys函数发送大写文本。这是一个例子。driver.findelementby.id--**.sendkeys大写文本;此外,如果上述代码对您有效,则将其标记为答案。