Отображение одного браузера в другом для функционального тестирования

microsoftoffice
webdriver
java
Теги: #<Tag:0x00007fedbb9d0390> #<Tag:0x00007fedbb9d0250> #<Tag:0x00007fedbb9d00e8>

(Sergey Brit) #1

Прошу не судить строго. Но я уже провел достаточно времени в поисках решения проблемы, но увы - так ничего внятного нет на просторах интернета. Так что, уважаемые форумчане, может кто-нибуть поможет.

Суть проблемы: Есть браузер, в нем контент. Нужно отобразить его содержимое в другом браузере с сохранением функционала.
Пример: Есть IE (назовем его ИЕ1). Нужно отобразить его контент в другом IE (ИЕ2), с сохранение всей функциональности. Т.е. кликая в ИЕ2, действия должны происходить в ИЕ1, с синхронизацией контента в обоих.

Где это применимо: Например там, где на прямую доступа к ИЕ1 нет.
Очень хорошим примером являеться работа с add-in в MS Office 2016 (десктопная версия). Там add-in является небольшим приложением, которое загружается во фрейм и работает в песочнице Office. По сути своей add-in это приложение написанное на javascript. В процессах этот фрейм отображается как IE.

Что было сделано:

  • Пытался приконектится через watir - не вышло, т.к. он не может коннектится к процессам
  • Через аппиум не подходит - он не может выполнять js скрипты в этом приложении
  • Через разного рода утилиты: F12 chooser, IEDiagnosticsAdapter - не вышло, это только дебаг, а мне не то надо.

Ремарка: Пишу на java. Есть тесты для вэб версии.

Буду признателен за любые, даже самые безумные идеи.
Заранее спасибо всем.


(Lev Yarushin) #2

А VNC не пробовали? Есть клиенты под браузер, https://github.com/novnc/noVNC например.


(Sergey Brit) #3

Это, на сколько я понял, просто vnc клиент. Как мне его приспособить под браузер?
Поясню. Мне нужно приконектиться к браузеру. Не к удаленной машине, а именно к, грубо говоря, удаленному браузеру.


(Lev Yarushin) #4

Если вы хотите чтобы в браузере можно было управлять другим браузером, то я
не представляю как этого достичь без использования VNC-подобных решений.
Есть вариант использования такой штуки как RemoteApp если OS - Windows
Для Linux можно сделать VNC для одного приложения.


(Дмитрий Мирошник) #5

Как вариант, попытаться настройками IE добиться, чтобы IE2 открывался в другой табе, а не в другом окне?
В этом случае переключить табу средствами селениума реально.
Не знаю, насколько реализуемо в IE. В старом FF вроде как можно было.
Ещё, как вариант, гляньте вот это


Там в ответах есть примеры кода на Java и Python, как это реализовать.


(Юрий Аксютин) #6

Предлагаю безумную идею.
Оттолкнемся от обратного, почему разные браузеры запущенные на одном компьютере могут отображать разные сайты не смешивая информацию?

  1. ip адрес
  2. порт
  3. куки(сессия)
    Пункты 1 и 2 на одной машине совпадают(если руками не настроено иное)
    Остается сессия
    то есть, если получится синхронизировать сессии контент будет отображаться одинаковый
    Возможно(если глубоко копнуть) selenium grid на такое способен

(Евгений) #8

в продолжение о сессии браузера
у меня завалялся такой код:

import java.net.URL;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;

public class RemoteWebDriverEx extends RemoteWebDriver {

public RemoteWebDriverEx(URL url, DesiredCapabilities capabilities, String session_id) {
	super(url, capabilities);
	this.close();
	setSessionId(session_id);
}

}