Как управлять внешним WebView2 ?
От: Victor Ivanidze Россия  
Дата: 17.01.26 10:44
Оценка:
Коллеги,

так называемый "новый" Outlook для Windows использует WebView2 для взаимодействия с пользователем.

Хочется из внешней программы получить доступ к DOM модели загруженной в WebView2 страницы.

Это в принципе возможно?
Re: Как управлять внешним WebView2 ?
От: Doom100500 Израиль  
Дата: 18.01.26 07:24
Оценка:
Здравствуйте, Victor Ivanidze, Вы писали:

VI>Коллеги,


VI>так называемый "новый" Outlook для Windows использует WebView2 для взаимодействия с пользователем.


VI>Хочется из внешней программы получить доступ к DOM модели загруженной в WebView2 страницы.


VI>Это в принципе возможно?


Если такое возможно — то это огромная дыра.
Спасибо за внимание
Re[2]: Как управлять внешним WebView2 ?
От: Victor Ivanidze Россия  
Дата: 18.01.26 10:00
Оценка:
VI>>так называемый "новый" Outlook для Windows использует WebView2 для взаимодействия с пользователем.

VI>>Хочется из внешней программы получить доступ к DOM модели загруженной в WebView2 страницы.


VI>>Это в принципе возможно?


D>Если такое возможно — то это огромная дыра.


Нда? А как же всякие программы тестирования работают, которые эмулируют пользовательские перемещения мыши, нажатия клавиш и т.п.?
Re[3]: Как управлять внешним WebView2 ?
От: Doom100500 Израиль  
Дата: 18.01.26 10:45
Оценка:
Здравствуйте, Victor Ivanidze, Вы писали:

VI>>>так называемый "новый" Outlook для Windows использует WebView2 для взаимодействия с пользователем.


VI>>>Хочется из внешней программы получить доступ к DOM модели загруженной в WebView2 страницы.


VI>>>Это в принципе возможно?


D>>Если такое возможно — то это огромная дыра.


VI>Нда? А как же всякие программы тестирования работают, которые эмулируют пользовательские перемещения мыши, нажатия клавиш и т.п.?


Либо эмулируют, внезапно, юзер инпут (т.е. шлют сообщения окну), либо, как в юнит тестах, подменяют web view селениумом (такой хромиум без ui), в который загружают тестируемый DOM.
Спасибо за внимание
Re[4]: Как управлять внешним WebView2 ?
От: Victor Ivanidze Россия  
Дата: 18.01.26 10:55
Оценка:
VI>>>>так называемый "новый" Outlook для Windows использует WebView2 для взаимодействия с пользователем.

VI>>>>Хочется из внешней программы получить доступ к DOM модели загруженной в WebView2 страницы.


VI>>>>Это в принципе возможно?


D>>>Если такое возможно — то это огромная дыра.


VI>>Нда? А как же всякие программы тестирования работают, которые эмулируют пользовательские перемещения мыши, нажатия клавиш и т.п.?


D>Либо эмулируют, внезапно, юзер инпут (т.е. шлют сообщения окну), либо, как в юнит тестах, подменяют web view селениумом (такой хромиум без ui), в который загружают тестируемый DOM.


Вот я и хочу "послать сообщение окну" c WebView2.
Re[5]: Как управлять внешним WebView2 ?
От: Doom100500 Израиль  
Дата: 18.01.26 11:06
Оценка:
Здравствуйте, Victor Ivanidze, Вы писали:


VI>>>>>так называемый "новый" Outlook для Windows использует WebView2 для взаимодействия с пользователем.


VI>>>>>Хочется из внешней программы получить доступ к DOM модели загруженной в WebView2 страницы.


VI>>>>>Это в принципе возможно?


D>>>>Если такое возможно — то это огромная дыра.


VI>>>Нда? А как же всякие программы тестирования работают, которые эмулируют пользовательские перемещения мыши, нажатия клавиш и т.п.?


D>>Либо эмулируют, внезапно, юзер инпут (т.е. шлют сообщения окну), либо, как в юнит тестах, подменяют web view селениумом (такой хромиум без ui), в который загружают тестируемый DOM.


VI>Вот я и хочу "послать сообщение окну" c WebView2.



А говоришь, что хочешь доступ к DOM.

IMHO:
Два пути: либо управлять мышью и клавиатурой через (если Windows) SendInputs, либо писать юнит тесты через selenium (например так).
Спасибо за внимание
Re[6]: Как управлять внешним WebView2 ?
От: Victor Ivanidze Россия  
Дата: 18.01.26 11:57
Оценка:
D>>>Либо эмулируют, внезапно, юзер инпут (т.е. шлют сообщения окну), либо, как в юнит тестах, подменяют web view селениумом (такой хромиум без ui), в который загружают тестируемый DOM.

VI>>Вот я и хочу "послать сообщение окну" c WebView2.



D>А говоришь, что хочешь доступ к DOM.


D>IMHO:

D>Два пути: либо управлять мышью и клавиатурой через (если Windows) SendInputs, либо писать юнит тесты через selenium (например так).

Виноват. Я плохо сформулировал изначально. На самом деле хочется имеющееся web browser extension привязать к "внутреннему" WinWiew2. Это в принципе возможно?
Re[7]: Как управлять внешним WebView2 ?
От: Doom100500 Израиль  
Дата: 18.01.26 12:27
Оценка: 4 (1)
Здравствуйте, Victor Ivanidze, Вы писали:


D>>IMHO:

D>>Два пути: либо управлять мышью и клавиатурой через (если Windows) SendInputs, либо писать юнит тесты через selenium (например так).

VI>Виноват. Я плохо сформулировал изначально. На самом деле хочется имеющееся web browser extension привязать к "внутреннему" WinWiew2. Это в принципе возможно?


Чесно сказать, не знаю, что такое Web Browser Extension, но я вот посмотрел WebView2 getting started, и там есть такой код:

    webview->add_NavigationStarting(Callback<ICoreWebView2NavigationStartingEventHandler>(
                            [](ICoreWebView2* webview, ICoreWebView2NavigationStartingEventArgs* args) -> HRESULT {
                                wil::unique_cotaskmem_string uri;
                                args->get_Uri(&uri);   // здесь
                                std::wstring source(uri.get());
                                if (source.substr(0, 5) != L"https") {
                                    args->put_Cancel(true);
                                }
                                return S_OK;
                            }).Get(), &token);


Теоритически, если есть uri, то можно использовать selenium для тестов.

ПС:
У нас тут взвешивались разные возможности для нового поколения нашей системы. Для web-based вариантов (electron, webview, etc), наш QA, говорит, что интеграционные тесты придётся переписывать с coded UI(система, которая двигает мышь и шлёт нажатия клавиш) на selenium.

Я, по-моему наврал, что у selenium нет UI. UI можно отключать, selenium — это хромиум, управляемый из кода на разных языках, с возможностью манипулировать DOM.
Его ещё используют для парсинга чистых js сайтов, т.к. он выполняет js и рендер.

Всякие ангуляры при создании проекта генерируют тестовый проект с использованием selenium.

Как я увидел, и для Visual Studio есть какая-то интеграция.
Спасибо за внимание
Re[8]: Как управлять внешним WebView2 ?
От: Victor Ivanidze Россия  
Дата: 18.01.26 12:45
Оценка: 2 (1)
D>Теоритически, если есть uri, то можно использовать selenium для тестов.

D>ПС:

D>У нас тут взвешивались разные возможности для нового поколения нашей системы. Для web-based вариантов (electron, webview, etc), наш QA, говорит, что интеграционные тесты придётся переписывать с coded UI(система, которая двигает мышь и шлёт нажатия клавиш) на selenium.

D>Я, по-моему наврал, что у selenium нет UI. UI можно отключать, selenium — это хромиум, управляемый из кода на разных языках, с возможностью манипулировать DOM.

D>Его ещё используют для парсинга чистых js сайтов, т.к. он выполняет js и рендер.

D>Всякие ангуляры при создании проекта генерируют тестовый проект с использованием selenium.


D>Как я увидел, и для Visual Studio есть какая-то интеграция.



Может, вот тут что-то интересное для себя увидишь: https://github.com/MicrosoftEdge/WebView2Feedback/issues/3671
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.