Итак, я встраиваю стороннюю веб-страницу в наше приложение WPF (через элемент управления WebBrowser) ... одна из целей - предварительно загрузить некоторые входные данные при загрузке страницы ... подход заключается в выполнении нескольких команд JSвпоследствии, который поддерживает элемент управления WPF, и в основном то же самое, что и использование консоли JS инструментов разработчика браузера.
веб-страница, кажется, написана с использованием Angular (в зависимости от разговора с сотрудником она выглядит как v1),jQuery также доступен.
До сих пор у меня не было проблем с нажатием на некоторые кнопки (множественный выбор входов) с помощью навигации DOM (document.getElementById плюс несколько вызовов querySelector / etc) к флажкуи вызывая .click () ... при этом запускаются угловые события, все хорошо.
проблема с вводом текста ... пока я пробовал следующее:
- doc.getElement (). Value = x;
- $ (doc.getElement ()). Val (x);
- doc.getElement (). Value = x;angular.element (getElement) .scope. $ apply ();
doc.getElement (). value = x;doc.getElement (). dispatchEvent (new FocusEvent ());
- изменяет текстовое поле, но не вызывает никаких событий, и когда я щелкаю в текстовом поле, текст сбрасывается обратно к значению по умолчанию(предположительно из угловой модели представления)
angular.element (doc.getElement ()). scope (). viewModel.data.whwhat = x;
- angular.element (doc.getElement ()). Scope (). ViewModel.data.whwhat = x;.scope (). $ apply ();
angular.element (doc.getElement ()). scope (). $ apply (function (x) {x.data.viewPort.whwhat =x;});
- не влияет на пользовательский интерфейс, хотя любые будущие вызовы модели представления, похоже, сохраняют значение (не пытались делать это до методов .click (), чтобы проверить,распознал во время обработки click ()
другие идеи, которые у меня были проблемы с тестированием:
Я попытался установить значение,установить фокус на другом элементе, а затем вернуться к оригиналу - просто чтобы увидеть, обновится ли пользовательский интерфейс, как это происходит в интерактивном режиме для меня, - этого не произошло.
выглядит так, что прослушиватели включенынажатие клавиши, поэтому я подумал о том, чтобы попытаться смоделировать событие, но получал Отказано в доступе от Edge (мне нужно поиграться с настройками Chrome Kerberos, чтобы заставить его работать, и по причинам, связанным с другими внутренними сайтами, я пыталсяизбегайте этого).
ищу любые и все предложения.
Я знаюw все это кажется задом наперед, но я не имею никакого контроля над сторонним веб-сайтом (хотя у меня есть звонок с их инженерами на следующий день или около того), чтобы обсудить.