Я устанавливаю среду автоматизации, используемую для автоматизации определенных потоков в приложении JavaFx.Существует новый вариант использования, когда нам нужно отображать стороннюю веб-страницу в нашем приложении с помощью SWT Browser API.
С тех пор, как мойПриложение использует JavaFX, а не SWT, мне пришлось встроить браузер SWT, используя подход, упомянутый здесь .Нам пришлось использовать браузер SWT, потому что API, предоставляемый сторонним приложением, использует приемники событий SWT для связи с моим приложением.
Теперь, когда браузер встроен, нам нужно протестировать определенные сценарии обмена данными с помощью автоматических тестов.Я попытался автоматизировать потоки с помощью метода SWTBrowser.execute (String script) , написав несколько методов-оболочек.Пример кода:
public void setTextById(String id, String text) throws InterruptedException
{
Browser browser = getSwtBrowser();
CountDownLatch latch = new CountDownLatch(1);
browser.getDisplay().syncExec(new Runnable()
{
@Override public void run()
{
boolean result = browser
.execute("document.getElementById('" + id + "').setAttribute('value', '" + text + "');");
latch.countDown();
}
});
latch.await();
}
Но этот подход, кажется, заново изобретает колесо и склонен к множеству ошибок.Я планирую использовать Selenium для доступа к некоторому контенту или манипулирования им на веб-странице, поскольку мы уже используем Selenium для других случаев использования в приложении.
Браузер SWT использует собственный браузерОС, на которой она развернута для рендеринга веб-страниц, как предложено здесь Он использует:
- IE 11 в Windows
- Safari 11 в Ubuntu
Вопрос: Как мы можем получить Selenium дляподключиться к WebDrivers встроенных браузеров ОС SWTBrowser для доступа к DOM в существующей сессии браузера ?
РЕДАКТИРОВАТЬ: Сделал немного больше отладки и отметил следующие моменты:
Selenium состоит из двух частей для автоматизации тестирования. клиент и сервер .Клиент отправляет операции автоматизации в виде HTTP-запроса POST на сервер.Сервер отвечает за порождение нужного браузера и выполнение реального взаимодействия.
Я просматривал код сервера и обнаружил, что сервер запускает собственный браузер, используя IELaunchURL () / CreateProcess () API.Также есть метод attachToBrowser (...) .
Я хотел бы использовать метод attachToBrowser (...) отправка информации о процессе из Internet Explorer, встроенной в SWTBrowser.В этом подходе есть и другая сложность.Похоже, что SWTBrowser не порождает процесс IE напрямую.Он взаимодействует с dll интернет-обозревателя. Можно ли в любом случае извлечь информацию о процессе встроенного процесса IE в этом случае?Или есть какой-то другой подход, который я могу использовать, чтобы решить эту проблему?