Я сделал, что скрипт заполняет все видимые поля ввода в цикле. Но мне нужно замедлить между заполнением полей ввода. Мне нужно помедленнее, потому что наша серверная сторона выдает сообщения об ошибках, когда вы заполняете быстро (оптимистичная логика). Есть идеи, как это можно сделать?

Мой код для определения полей ввода + их заполнения приведен ниже:

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);
        }
    }
}
0
Peter Pavlov 20 Авг 2018 в 12:11

3 ответа

Лучший ответ

Вы можете посылать символ за символом в поле ввода с некоторой задержкой, как это (Предполагая, что 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);
    }
 }
0
Shivam Mishra 20 Авг 2018 в 11:17

Попробуй использовать

 Thread.sleep(1000);

1000 - это количество миллисекунд, которые программа приостановит.

-2
desoss 20 Авг 2018 в 09:20

Вы можете написать собственную реализацию для sendKeys для некоторого WebElement:

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();
            }
        }
    }
0
Abhishek_Mishra 20 Авг 2018 в 13:05
51927478