Selenium Webdriver - sendKeys()不发送所有密钥 - Java

时间:2013-09-24 17:28:09

标签: java selenium

我使用Selenium Webdriver和Java,我发现了一个问题。当我尝试将一些文本发送到文本字段时,它只发送第一个两个字符。我尝试用JavaScriptExecutor设置它,但同样的事情发生了。 ChromeDriver正在运行并正常运行。代码如下:

    public void sendNumberToChrome (int number){
        textfield.clear(); //  textfield is already set, it's classic input field with max. 10 characters
        System.out.println(String.valueOf(number)); // This prints for example 94
        textfield.sendKeys(String.valueOf(number)); // But only "9" appears in the browser
    }

我也尝试逐个字符地发送它:

String[] arr = String.valueOf(number).split("(?<!^)");  // splits number character by character
for (String s : arr){
    System.out.println(s); // Prints 9 and then 4
    textfield.sendKeys(s); // Also only 9 appears
    Thread.sleep(100); // Maybe browser can not work too fast, so I will wait before sending next character
}

JavascriptExecutor也只发送一个字符并且每隔几分钟崩溃(不知道为什么),所以我没有使用它。 但有趣的是 - 当我这样做时:

textfield.sendKeys(String.valueOf(94));

它向Chrome发送94!我不知道问题出在哪里,有人能帮助我吗?

编辑:Chrome版本:29.0.1547.76米,Selenium Server Standalone 2.35.0,Chromedriver v2.3

1 个答案:

答案 0 :(得分:0)

页面上的Javascript正在弄乱您的输入

试试这段代码

static boolean sendKeyIntoElement(WebElement webElement, String value){
    webElement.click();
    webElement.sendKeys(value);

    while(!webElement.getAttribute("value").equals(value)){
        webElement.click();
        webElement.sendKeys(Keys.CONTROL + "a");
        webElement.sendKeys(Keys.DELETE);
        try {
            Thread.sleep(500);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    return webElement.getAttribute("value").equals(value);
}