C#WebBrowser HTMLElement.InvokeMember(“click”)在<form>标签</form>中不起作用

时间:2015-02-25 22:43:26

标签: c# html webbrowser-control

我正在编写一个C#表单应用程序,它通过单击WebBrowser中的按钮,链接,表单等来自动执行某些用户行为。一切正常,我使用InvokeMember(“点击”)在几个按钮和链接上没有问题,但现在我只有一次点击。

我挣扎了几天,我尝试了几个技巧,但还没有任何效果。表单的HTML代码基本上如下所示:

<form name="shipsChosen" id="shipsChosen" method="post" action="http://www.example.com/index.php?page=2">

<li class="off" id="button1">
            <div class="buildingimg"><a  href="javascript:void(0);"></a></div>
            <input id="ship_1"/>
</li>

<li class="off" id="button2">
            <div class="buildingimg"><a  href="javascript:void(0);"></a></div>
            <input id="ship_2"/>
</li>

<li class="off" id="button3">
            <div class="buildingimg"><a  href="javascript:void(0);"></a></div>
            <input id="ship_3"/>
</li>

</form>

<a  href="javascript:void(0);" onClick='setMaxIntInput();' id="sendall"></a>
<a id="continue" class="off" href="" onClick="trySubmit(); return false;"><span>Submit</span></a>

我想要的是点击带有“sendall”ID的链接,然后点击带有“继续”ID的链接。

我已经尝试了以下内容,但它们都没有奏效。什么都没发生:

HtmlElement AllShips = webBrowser1.Document.GetElementById("sendall");
AllShips.RaiseEvent("onclick");
AllShips.InvokeMember("click");

我还尝试在输入字段中加入一些值,但它既不起作用:

HtmlElement Input= webBrowser1.Document.GetElementById("ship_202");
Input.Focus();
Input.InnerText = "ship_1";

这对我来说非常有趣,因为当我在我的带有WebBrowser的C#表单应用程序中没有任何用户交互的情况下运行它时,它不起作用,但是如果我在WebBrowser中单击一次,然后运行上面的点击代码,它的工作原理。但这不是自动化权利..?

任何人遇到过类似的问题吗?我在工作点击之间找到的唯一区别在于HTML。

更多: 我正在为WebBrowser使用Internet Explorer 11 FEATURE_BROWSER_EMULATION。 页面已满载。

1 个答案:

答案 0 :(得分:0)

尝试让您的应用程序暂停,然后再调用它们之间的点击,因为该页面可能仍然忙于某些早期进程。 您可以使用计时器控件来实现该效果。