我正在尝试使用webbrowser控件自动提交表单。我使用以下代码提交“
currentElement.InvokeMember("submit");
现在这种方法运行正常。但有时一个表单可能有一些javascript函数,在提交时按钮点击调用。所以,假设一个表单有一个名为“Submit”的按钮图像,当用户按下它时,调用一个javascript函数somefunction(),然后提交表单。
问题是当我使用上面的方法InvokeMember然后它只提交表单并且不执行相关的脚本(在这种情况下是somefunction())而且我必须手动编写代码
webBrowser1.Document.InvokeScript("somefunction");
但是这需要事先知道是否有某些功能。有什么方法我提交表单,它会自动运行所有相关的JavaScript?
我不知道用户点击提交表单的按钮名称或ID。因为在某些情况下,它甚至可能没有ID或名称。
<span class="btn" onclick="somefunction()">
<img style="cursor:pointer" title="Submit" alt="Submit" src="http://stackoverflow.com/imagesbutton.png?2012">
<div id="s" style=""></div>
</span>
答案 0 :(得分:2)
已经有一段时间了,因为我已经搞乱了WebBrowser控件,但我曾经让它为我跳过篮球。我过去曾经遇到过这个问题。
http://www.codeproject.com/Tips/60924/Using-WebBrowser-Document-InvokeScript-to-mess-aro
当你得到一个Form
对象时,从OnSubmit
中取出字符串并运行它以在提交表单之前执行它:
object[] codeString = {"myObject.setVariable(0);"};
webBrowser1.Document.InvokeScript("eval",codeString);
像魅力一样。
答案 1 :(得分:2)
如果您知道图片代码的名称或ID,则可以使用
webBrowser1.Document.GetElementById("button").InvokeMember("click");
或
webBrowser1.Document.GetElementByName("button").InvokeMember("click");
在javascript中调用关联函数