当前位置: 首页 > 编程笔记 >

使用C# 的webBrowser写模拟器时的javascript脚本调用问题

蒯宏达
2023-03-14
本文向大家介绍使用C# 的webBrowser写模拟器时的javascript脚本调用问题,包括了使用C# 的webBrowser写模拟器时的javascript脚本调用问题的使用技巧和注意事项,需要的朋友参考一下

感觉很久不写模拟器代码了,昨天调试的时候碰了点壁,记录下来,避免大家再跟我犯同样的错误。

加入Javascript脚本的地方:

HtmlElement jsElement = webBrowser1.Document.CreateElement("script");
jsElement.SetAttribute("type", "text/javascript");
jsElement.SetAttribute("text", "showMeAction = function(e) { window.alert(e);}");
webBrowser1.Document.Body.AppendChild(jsElement);

调用的地方:

string[] args = new string[1];
args[0] = "Hello element!";
webBrowser1.Document.InvokeScript("showMeAction", args);

大家特别注意的是后面脚本调用的时候,只能出现函数名与参数值列表,不能增加其他内容,否则调用就不会成功。

使用的脚本代码:(这里的脚本代码模拟了鼠标移动的基础需求,通过Js直接发鼠标事件的方式来实现自动机器人)

function createEvent(eventName, ofsx, ofsy)
{ 
  var evt = document.createEvent('MouseEvents'); 
  evt.initMouseEvent(eventName, true, false, null, 0, 0, 0, ofsx, ofsy, false, false, false, false, 0, null); 
  return evt; 
}
function moveElement(pxToMove)
{
var sliderKnob = document.getElementsByClassName("gt_slider_knob")[0]; 
var boxRect = sliderKnob.getBoundingClientRect();
var move = createEvent('mousemove', boxRect.left + sliderKnob.offsetLeft + pxToMove, boxRect.top + sliderKnob.offsetTop); 
var down = createEvent('mousedown', boxRect.left + sliderKnob.offsetLeft, boxRect.top + sliderKnob.offsetTop);
var up = createEvent('mouseup'); 
sliderKnob.dispatchEvent(down); 
document.dispatchEvent(move); 
sliderKnob.dispatchEvent(up); 
}

以上所述是小编给大家介绍的使用C# 的webBrowser写模拟器时的javascript脚本调用问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!

 类似资料:
  • 我需要从AnyLogic调用R脚本。我有一个代理“传感器”,它将从一个特定的位置发送一个随机文件到一个R脚本,然后R脚本将分析该文件,并让我们知道该文件的类型(图像、声音、文本等) 请让我知道如何从AnyLogic调用R脚本。。

  • 问题内容: 我有一个带有一个单一函数的DLL,它具有五个双精度和一个整数: 它重新调整了由三重数组组成的自定义结构计算的res: 要返回值,我这样做: 我已经用MinGW对其进行了编译,并且试图在python中使用它来执行以下操作: 但是,每当我尝试使用这些值调用函数时,都会将其抛出: 我也不知道如何捕获我声明的自定义结构并将其每个元素转换为Python浮点数。我研究了这个PyDocs链接,但无济

  • 本文向大家介绍C#使用webbrowser的常见用法实例,包括了C#使用webbrowser的常见用法实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#使用webbrowser的常见用法。分享给大家供大家参考。具体如下: 判断是否网络正常 设置默认页面: 登录代码: 模拟点击链接: 运行网页中的JS函数 填充数据: 希望本文所述对大家的C#程序设计有所帮助。

  • 我有一个Java程序来调用python脚本。我使用了exec方法。请在下面找到代码片段: Python程序(从维基百科收集一部分文本)单独运行时,可以提供适当的输出。当从Java调用时,我无法从python程序获得完整的输出。 我使用ready()方法检查了BufferedReader对象的状态(如本文所述,代码进入了无限循环)。 我认为其他人也面临着类似的问题-https://stackover

  • 问题内容: 我正在尝试编写一个JUnit测试用例,用于测试助手类中的方法。该方法使用REST调用外部应用程序,而这正是我试图在JUnit测试中模拟的调用。 helper方法使用Spring的RestTemplate进行REST调用。 在测试中,我创建了一个模拟REST服务器和一个模拟REST模板,并按如下所示实例化它们: 然后,我给模拟服务器添加种子,以便当助手方法进行REST调用时它应返回适当的

  • 我正在使用selenium java script exceuter执行下面的javascript,我想从fetch调用返回响应,并想将其存储在代码中的java变量中。但下面的代码显示了脚本超时,有什么建议吗?我怎样才能达到以上要求???