Как быстро установить текст в textarea, используя Java и Selenium - PullRequest
0 голосов
/ 15 января 2020

Этот код работает, но sendKeys отправляет все символы один за другим, и это очень и очень долго (40 с).

String value = "...very long text...";
WebElement element = ...
element.sendKeys(value);

Как быстро установить текст в текстовой области, используя Java и Selenium? либо с элементом Selenium, либо путем изменения скорости, либо символы отправляются один за другим.

Пожалуйста, нет решения с javascript исполнением.

Ответы [ 4 ]

2 голосов
/ 17 января 2020

Вот способ использования буфера обмена для этого:

    String value = "...very long text...";      
    Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
    Transferable transferable = new StringSelection(value);
    clipboard.setContents(transferable, null);  
    wait = new WebDriverWait(driver, ec_Timeout);     
    WebElement element  = wait.until(ExpectedConditions.presenceOfElementLocated(By.name("name_of_input_element")));
    String vKey = "v";

            try
            {
        element.sendKeys(Keys.CONTROL , vKey);    
            }
            catch (Exception ex)
            {

            }
2 голосов
/ 15 января 2020

Метод sendKeys является единственным чистым Java способом ввода текста в текстовое поле с помощью Selenium. К сожалению, все другие способы требуют JavaScript, что вы не хотите делать.

Ваша единственная альтернатива - внести свой вклад в проект Selenium на GitHub , отправив вытяните запрос с желаемым поведением и убедите консорциум World Wide Web включить этот новый метод (sendKeysQuickly?) в официальную версию WebDriver spe c: https://www.w3.org/TR/webdriver/ - немалый задача действительно!

0 голосов
/ 15 января 2020

/! \ Внимание, это только обходной путь.

String value = "...very long text...";
WebElement element = ...
String javascript = "arguments[0].value=arguments[1];";
(JavascriptExecutor) driver.executeScript(javascript, element, value.substring(0, value.length() - 1));
element.sendKeys(value.substring(value.length() - 1));

/! \ 2-й обходной путь (не работает на пульте дистанционного управления):

String value = "...very long text..."; 
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new StringSelection(value), null);
WebElement element = ... 
element.sendKeys(Keys.CONTROL , "v");
0 голосов
/ 15 января 2020

Вы можете установить значение напрямую, используя js скрипт:

  JavascriptExecutor js = (JavascriptExecutor) driver;
  js.executeScript("document.getElementById('textareaId').setAttribute('value', 'yourText')");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...