在Angular网页中模拟文本用户输入

时间:2018-09-12 22:30:57

标签: javascript angularjs

因此,我正在将第三方网页嵌入到我们的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视图模型中获取)
  • angular.element(doc.getElement())。scope()。viewModel.data.whatever = x;

  • angular.element(doc.getElement())。scope()。viewModel.data.whatever = x; .scope()。$ apply();
  • angular.element(doc.getElement())。scope()。$ apply(function(x){x.data.viewPort.whatever = x;});

    • 在UI中没有任何影响,尽管以后对viewmodel的任何调用似乎都会保留该值(请不要尝试在.click()方法之前执行此操作,以查看在click()处理期间是否可以识别该值)

我在进行测试时遇到的其他想法:

  • 我尝试设置值,将焦点放在另一个元素上,然后又回到原始元素-只是为了查看UI是否会像对我一样交互式地刷新-不会。

  • 看起来像在按键上有监听器,所以我考虑过尝试模拟事件,但从Edge获得了权限被拒绝(我需要摆弄Chrome的Kerberos设置才能使其正常工作,对于与其他内部网站相关的原因,我尝试避免这样做。

寻找所有建议。

我知道整个过程似乎都是倒退,但是我无法控制第三方网站(尽管第二天左右我确实会打电话给他们的工程师)来讨论。

0 个答案:

没有答案