Необходимо протестировать некий функционал при вставке текста из буфера обмена.
Если бы все гонялось на одной машине, например linux с визуализацией, то никаких проблем бы не возникало, записал бы в буфер так:
public static void setClipboardContents(String aString) {
StringSelection stringSelection = new StringSelection(aString);
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, null);
}
затем вставил в поле при помощи комбинации клавиш Ctrl+V.
Но как быть если тесты запускаются на машине без визуализации с помощью seleniumGrid и через RemoteWebDriver гоняются на другой.
Сталкиваюсь с двумя проблемами:
Для записи в Clipboard требуется дисплей, то есть если нет визуализации, то запись в буфер обмена невозможна.
Допустим визуализация есть и я записал в буфер обмена текст, затем хочу вставить в поле, но браузер то на другой машине, там буфер пустой, опять же задача невыполнима.
С помощью средств вуртуализации, в данном случае стоит openVZ, расшарить буфер между вируалками не получается, не нашел как это настроить=(
Возможно у selenium есть свои средства, ну мало ли. Например, для возможности работы с файлами в таком окружении существует org.openqa.selenium.remote.LocalFileDetector.
Возможно средствами Java можно каким-либо способом передавать clipboard.
Интересно, зачем вам нужен именно буффер обмена. Ну раз так, то может создадите скрипт или мини программу на стороне другой машины, которая будет копировать в буффер обмена текст, который вы в неё отправите. А в тексте теста дергать эту программу от имени того же пользователя, что выполняет тест. По мне, звучит как шаманство, но идея может сработать. Хотя я так и не понимаю, почему бы не запомнить текст в переменную и её записать в поле.
Тема, конечно, старая, но актуальная? На сегодняшний день решение не появилось?
У меня тоже на Ubuntu без виртуализации не удается вставить значение из буфера…видимо, потому что оно в буфер не передается.
При нажатии на кнопку должен скопироваться в буфер URL страницы(не той на которой находишься на данный момент) и я хочу проверить, что копируется то, что нужно. Что же тут ерундового?
Да я с удовольствием забыл бы об этой проблеме ))) Поясните, пожалуйста, о каком поле речь? Я уж хотел взять текст ссылки из атрибута, но его там не оказалось: