Перейти к содержимому

Фотография

Работа с буфером обмена на удаленной машине

remote clipboard буфер обмена selenium java

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 7

#1 FocusPocus

FocusPocus

    Новый участник

  • Members
  • Pip
  • 1 сообщений

Отправлено 22 января 2014 - 11:55

Всем привет, 

Столкнулся с такой проблемой:

 

Необходимо протестировать некий функционал при вставке текста из буфера обмена. 

Если бы все гонялось на одной машине, например linux с визуализацией, то никаких проблем бы не возникало, записал бы в буфер так:

 

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

  • 0

#2 Mystery_Andrew

Mystery_Andrew

    Активный участник

  • Members
  • PipPip
  • 81 сообщений
  • ФИО:Андрей
  • Город:Москва

Отправлено 22 января 2014 - 12:06

Для подобных целей мы сделали обертку для селениума, в которой как раз реализованы методы, которые необходимо выполнять именно на удаленной машине (создание скриншотов средствами ОС, клики роботом, открытие/закрытие портов и т.п.).

Компилируем все вместе с селениумом в один джарник. Разница с использованием голого селениума лишь в том, что надо скачивать джарник не с сайта селениума, а из нашего хранилища.


  • 0

#3 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 870 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 23 января 2014 - 13:14

Андрей, расскажите, как технически эти дополнительные команды реализованы, если не сложно и если позволяет политика компании.


  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#4 Mystery_Andrew

Mystery_Andrew

    Активный участник

  • Members
  • PipPip
  • 81 сообщений
  • ФИО:Андрей
  • Город:Москва

Отправлено 27 января 2014 - 13:39

С помощью RMI-интерфейса

Если нужны подробности, спрашивайте, расскажу детальней.


  • 0

#5 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 870 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 28 января 2014 - 07:43

То есть это дополнительный независимый сервер?

 

Я просто подумал, может быть вы сделали расширение для Selenium Server, добавив свои сервлеты для новых команд, и хотел попросить в качестве примера для демонстрации того, как можно/нужно расширять возможности Selenium Server.


  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#6 Mystery_Andrew

Mystery_Andrew

    Активный участник

  • Members
  • PipPip
  • 81 сообщений
  • ФИО:Андрей
  • Город:Москва

Отправлено 28 января 2014 - 08:24

Да, по сути, это сервер, внутрь которого встроен селениум-сервер. При старте сервера также инициализируется селениум и слушает стандартный порт, благодаря этому можно использовать селениум как обычно + у нас есть возможность вызывать дополнительные методы через RMI - интерфейс.

Основной плюс данного подхода - легкий переход на новую версию селениума (исправил версию в помнике и скомпилировал jar-ник). 


  • 0

#7 Demidov_Kirill

Demidov_Kirill

    Новый участник

  • Members
  • Pip
  • 2 сообщений
  • ФИО:Демидов Кирилл

Отправлено 02 февраля 2023 - 18:26

Привет коллеги! не появилось ли более элегантного решения, нежели сервер в сервере?

Проблема точно такая же, как описана в вопросе. 


  • 0

#8 Demidov_Kirill

Demidov_Kirill

    Новый участник

  • Members
  • Pip
  • 2 сообщений
  • ФИО:Демидов Кирилл

Отправлено 06 марта 2023 - 16:01

Проблема решается:

JavascriptExecutor js = (JavascriptExecutor) driver;

String script = "navigator.clipboard.writeText('new value')"; // замените на нужное значение

js.executeScript(script);


  • 0



Темы с аналогичным тегами remote, clipboard, буфер обмена, selenium, java

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных