2012-04-23 14 views
6

我試圖使用webbrowser控件自動提交表單。我使用下面的代碼提交」C#webbrowser控件(執行與表單相關的所有javascript)

currentElement.InvokeMember("submit"); 

現在這種方法工作得很好,但有時候一個形式可能有一些JavaScript函數,呼籲在提交時按鈕的點擊。所以我們可以說,如果一個表單有一些按鈕圖像稱爲「提交」,當用戶按下它時,調用javascript函數somefunction(),然後提交表單。

問題是當我使用上面的方法InvokeMember時,它只提交表單並且沒有' t執行相關的腳本(在這種情況下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

OOF。你所給出的例子會在一般情況下解決這個問題。在你的''例子中,我假設在表單中輸入東西並按輸入也不起作用。如果瀏覽器無法識別提交按鈕,我不會給你的包裝好幾率... – sblom 2012-04-26 18:02:47

+0

你可以模擬點擊任何東西,但你不能確定這個行動,最終會做一個提交。因此,問題的答案是「我有任何提交表單的方式,它會自動運行所有關聯的JavaScript?」是的,只要你知道在哪裏點擊。 – 2012-04-27 12:47:58

回答

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); 

就像一個魅力。

2

如果你知道這個名字或圖像標籤的ID可以

webBrowser1.Document.GetElementById("button").InvokeMember("click"); 

webBrowser1.Document.GetElementByName("button").InvokeMember("click"); 

致電聯想功能在javascript

相關問題