2017-04-04 76 views
2

我有一个文本字段,我需要输入数字并将焦点移出字段,文本字段中的值将自动填充。我已经使用了以前工作的代码。但是,现在运行/调试下面的代码不输入数字。Selenium Webdriver:机器人类:无法在文本字段中输入数字

代码:

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

} 
+0

当我在线上robot.keypress(Keyeven.VK_2)调试eclipse打开。该值在Eclipse IDE中打印,但不在应用程序文本框中打印?任何线索 – Sowmya

回答

1

中有“的SendKeys”的使用的差异,其是内建在硒的webdriver和机器人类。

的SendKeys():

这与驱动程序和驱动程序指向,因此,当你发送键就正好去元素和价值观提出(即使你使用的调试元素相关联蚀)。

Robot类:在另一方面

机器人无关既不司机也不元件驱动器指向。它所知道的只是生成键盘事件(在你的情况下输入数字)。所以当你打开eclipse并运行代码时,它实际上会将键盘事件发送到光标指向的地方,即“eclipse”。

现在遇到问题,当您尝试手动干扰某些操作时遇到问题。如果整个脚本运行时没有任何手动交互,它应该运行得很好!

希望它有帮助!

+0

谢谢你的详细解释Waman。 。当我不打扰执行时,数字不会输入到文本字段中。 – Sowmya

+0

你的意思是输入文本字段?还是失败? – Waman

+0

执行直到进入文本字段的行和它的失败,正如我所说的,数字不会传递到文本字段。 – Sowmya

0

Robot Example

在你的代码没有跳出我只是提供了这个网页上的例子显示了每个按键之间所使用的睡眠方法。

import java.awt.AWTException; 
import java.awt.Robot; 
import java.awt.event.KeyEvent; 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 

class Excercise1 { 

    public static void main(String[] args) throws AWTException, InterruptedException {  
     WebDriver driver = new FirefoxDriver(); 
     driver.get("http://spreadsheetpage.com/index.php/file/C35/P10/"); // sample url 
     driver.findElement(By.xpath(".//a[@href=contains(text(),'yearly-calendar.xls')]")).click(); 
     Robot robot = new Robot(); // Robot class throws AWT Exception 
     Thread.sleep(2000); // Thread.sleep throws InterruptedException 
     robot.keyPress(KeyEvent.VK_DOWN); // press arrow down key of keyboard to navigate and select Save radio button 

     Thread.sleep(2000); // sleep has only been used to showcase each event separately 
     robot.keyPress(KeyEvent.VK_TAB); 
     Thread.sleep(2000); 
     robot.keyPress(KeyEvent.VK_TAB); 
     Thread.sleep(2000); 
     robot.keyPress(KeyEvent.VK_TAB); 
     Thread.sleep(2000); 
     robot.keyPress(KeyEvent.VK_ENTER); 
    // press enter key of keyboard to perform above selected action 
} 

}

+0

我明白上面给出的机器人示例。但在我的情况下,我编写的代码曾经工作过一次,但重新运行时却没有再次发生。 – Sowmya

+0

另外,让我知道如何将数字输入到文本字段中,因为它对我来说比按下和输入事件所需要的更多。谢谢。 – Sowmya

相关问题