.sendkeys从循环时进行延迟

时间:2018-08-20 09:11:29

标签: java selenium selenium-webdriver automation

我已经完成了脚本在循环中填充所有可见输入字段的操作。 但是,我需要在填充输入字段之间放慢速度。我需要放慢脚步,因为当您快速填充(乐观逻辑)时,我们的服务器端会抛出错误消息 有什么想法可以做到吗?

我用于检测输入字段+填充它们的代码如下:

List<WebElement> allInputFields = driver.findElements(By.cssSelector("cm-edit-request-form dx-text-area textarea"));
if (allInputFields.size() != 0) {
    for (WebElement allInputFieldsElement : allInputFields) {
        if (allInputFieldsElement.isEnabled()) {
            wait.until(ExpectedConditions.elementToBeClickable((allInputFieldsElement)));
            allInputFieldsElement.sendKeys("Automation text" + uuid);
        }
    }
}

3 个答案:

答案 0 :(得分:0)

您可以像这样将每个字符逐个延迟地发送到输入框(假设uuid是您在其他地方初始化的字符串)-

    if (allInputFieldsElement.isEnabled()) {
        wait.until(ExpectedConditions.elementToBeClickable((allInputFieldsElement)));
        String inputText = "Automation text" + uuid;
        for (int i = 0; i < inputText.length(); i++) {
          allInputFieldsElement.sendKeys(inputText.substring(i, i+1));
          Thread.sleep(1000);
    }
 }

答案 1 :(得分:0)

您可以为某些WebElement的sendKeys编写自定义实现:

public void sendKeys(String keysToSend,WebElement element){
        for(char c:keysToSend.toCharArray()){
            element.sendKeys(Character.toString(c));
            try {
                Thread.sleep(300);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

答案 2 :(得分:-1)

尝试使用

 Thread.sleep(1000);

1000 是程序将暂停的毫秒数。