当前位置: 首页 > 知识库问答 >
问题:

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

裴韬
2023-03-14

我在Java中使用Selenium Webdriver,发现了一个问题。当我尝试向文本字段发送一些文本时,它只发送两个字符中的第一个字符。我尝试用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));

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

编辑:铬版本:29.0.1547.76米,硒服务器独立2.35.0,铬驱动程序v2.3

共有1个答案

唐阳晖
2023-03-14

页面上的 Java 脚本弄乱了您的输入

尝试以下代码

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);
}
 类似资料:
  • 问题内容: 我正在使用Java,Selenium和Chrome进行测试自动化。我们的开发人员最近将UI从AngularJS升级到Angular2(不确定是否重要)。但是从那以后,sendKeys在文本字段中输入不完整的字符。这是一个例子: 我也尝试使用executeScript。没用 它可以输入完整的字符,但表单认为该字段为空。 我还尝试在.sendKeys之前使用.click()并增加睡眠时间。

  • 问题内容: 我正在使用Java,Selenium和Chrome进行测试自动化。我们的开发人员最近将UI从AngularJS升级到Angular2(不确定是否重要)。但是从那以后,sendKeys在文本字段中输入不完整的字符。这是一个例子: 我也尝试使用executeScript。没用 它可以输入完整的字符,但是表格认为该字段为空。 我还尝试在.sendKeys之前使用.click()并增加睡眠时间

  • 这是我的代码: 服务器: 客户: 它可以正常工作,除了我希望当服务器向客户端发送“消息”“|MOD”时,我希望服务器将其发送给所有客户端,我该怎么做? 我是Java新手,但不是编码新手,所以如果我做错了一些可以做得更容易或更好的东西,请帮助我。 请帮忙。 非常感谢。

  • 问题内容: 我正在尝试使用新的Firebase服务向我的android设备发送推送通知。我注册并设置了一个应用程序,然后将接收通知所需的所有代码都放入了android应用程序中。通过Firebase控制台,我可以将通知发送到我的应用程序,它会被接收并显示。现在,我想编写一个Java独立服务器,向所有设备发送通知。这是我当前的代码: 这就是我从他们的服务器找回来的结果: 不幸的是,简单地删除“ to

  • 问题内容: 如何使用Selenium发送多个标签? 当我跑步时: 选择下一个元素。当再次执行时,什么也没有发生- 实际上选择了下一个元素->因此,与运行一次相同。 如何多次前进-基本上就像我多次手动按TAB键一样? 问题答案: 使用动作链: 或者,由于这是Python,因此您甚至可以执行以下操作:

  • 我正在尝试刮这个url https://www.veikkaus.fi/fi/tulokset#!/tarkennettu-haku 刮伤主要有三个部分: null 我刚刚意识到,当选中时,输入字段从#date-range#from-date变为#date-range#from-date#focus-visible