我有一个文本字段,我需要在其中输入数字并将焦点移出该字段,该文本字段中的值将自动填充。我使用了下面的较早工作的代码。但是,现在运行/调试下面的代码无需输入数字。

码:

public void dwshortname_and_Contract_number_is_entered() throws Throwable {

    Thread.sleep(5000);

    driver.findElement(By.id("consumerNamenew")).sendKeys("TestUser");

     driver.findElement(By.id("consumerNonew")).sendKeys("");

    Robot robot = new Robot();
    robot.delay(2000);
    robot.keyPress(KeyEvent.VK_2);
    robot.keyRelease(KeyEvent.VK_2);
    robot.keyPress(KeyEvent.VK_0);
    robot.keyPress(KeyEvent.VK_1);
    robot.keyPress(KeyEvent.VK_2);
    robot.keyRelease(KeyEvent.VK_2);
    robot.keyPress(KeyEvent.VK_2);
    robot.keyRelease(KeyEvent.VK_2);
    robot.keyPress(KeyEvent.VK_6);
    robot.keyPress(KeyEvent.VK_9);
    robot.keyRelease(KeyEvent.VK_9);
    robot.keyPress(KeyEvent.VK_9);
    robot.keyRelease(KeyEvent.VK_9);
    robot.keyPress(KeyEvent.VK_4);
    robot.keyPress(KeyEvent.VK_0);
    robot.keyPress(KeyEvent.VK_TAB);

 }

最佳答案

Selenium Webdriver和Robot Class中内置的“ SendKeys”的用法有所不同。

SendKeys():

这与驱动程序和驱动程序指向的元素相关联,因此,当您发送键时,它正好转到元素并放入值(即使您正在使用eclipse进行调试)。

机器人类别:

另一方面,机器人与驱动程序或驱动程序所指向的元素都不相关。它所知道的就是生成键盘事件(在您的情况下是输入数字)。因此,当您打开eclipse并运行代码时,它实际上会将键盘事件发送到光标指向“ eclipse”的地方。

现在要解决这个问题,当您尝试手动执行某些操作来干扰执行时,您会遇到问题。如果整个脚本在没有任何手动交互的情况下运行,则应该可以正常运行!

希望能帮助到你!

08-04 09:44