【发布时间】:2012-04-23 07:56:10
【问题描述】:
我正在尝试使用 webbrowser 控件自动提交表单。我正在使用以下代码提交”
currentElement.InvokeMember("submit");
现在这种方法可以正常工作。但有时表单可能有一些在提交时单击按钮时调用的 javascript 函数。因此,假设一个表单有一些名为“提交”的按钮图像,当用户按下它时,会调用一个 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>
【问题讨论】:
-
哎呀。您给出的
<span onClick>示例将使这在一般情况下成为一个非常难以解决的问题。在您的<span onClick>示例中,我假设在表单中输入内容并按 Enter 也不起作用。如果浏览器无法发现提交按钮,我不会给你的包装很好的机会...... -
您可以模拟点击任何内容,但您无法确定此操作最终会执行提交。那么,“我有什么方法可以提交表单并且它会自动运行所有关联的 javascript?”这个问题的答案。是的,前提是您知道点击的位置。
标签: c# forms webbrowser-control