我需要在网络浏览器控件中的textbox
中输入内容。简单地设置值不起作用,因为这不会运行javascript。
所以:
InvokeMember:我认为我可以使用invokemember(因为有InvokeMember("Click")
)。但谷歌对键盘事件保持沉默。
聚焦元素,然后将键发送到控件。它工作(Sendkeys.Send
),但仅在控件被激活时才有效。如果我切换到另一个窗口,它将完全发送密钥,但不是我想要的地方。
答案 0 :(得分:1)
所以...如果有人感兴趣的话。
什么是可能的?可以将密钥发送到窗口......从某种程度上说,可以将密钥发送到非活动窗口(使用SendMessage()和PostMessage()),但几乎没有人成功自WinXP& x32次......
我没有尝试过自己,但是有些人能够使用“SendInput”发送密钥。但无论如何这都没用,导致该功能只能将密钥发送到活动窗口。
所以... SendKeys.Send(我猜,它是SendInput的包装器)仍然是最好的方法。
<强>解决方案强>
我为webbrowser控件创建了一个表单(窗口)。我初始化它,但不要使用“显示”。然后我只是在“SendKeys.Send”之前使这个表单处于活动状态(别忘了关注元素(控件内部)和控件(表单内部))。由于没有要显示的表单,用户不会注意到任何内容,并且键会转到右侧窗口。如果需要,可以保存之前处于活动状态的窗口句柄,并在发送后再次激活(因此焦点不会丢失)。
<强>摘要强>
虽然我可以使用这个解决方案并且我会使用它,但它远非完美......如果有人发现更好的东西,请告诉我(即使在遥远的未来)。
答案 1 :(得分:0)
对于Java(不是Javascript),您无法通过DOM模拟键盘。您需要模拟读取窗口点击(请参阅Autohotkey等宏录制器工具)
答案 2 :(得分:0)
关于这个: “Javaspript。当我更改文本框的值时,有没有办法找出javascript运行的内容?我对java不太了解。 Element的属性没有OnClick / OnKeyUp等。
要查看所有javascript,您可以使用firefox的firebug插件。它有相应的标签。
更多信息:http://getfirebug.com/whatisfirebug/
您可以设置断点并查看所需的所有javascript变量。
答案 3 :(得分:0)
如果有人碰到这个寻找框架不可知方式来解雇任何HTML和鼠标事件,请查看此处:How to simulate a mouse click using JavaScript?
答案 4 :(得分:0)
您可以为每个角色设置并调用一个事件。在这个例子中,我调用了按键事件。为您输入的最后一个字符调用该事件。
rsi
他是HtmlElement