2011-12-13 157 views
-2

我在我的項目中使用網頁瀏覽器控件,並打開一個具有文件選擇器對象的網頁。 現在我想以編程方式注入此文件選擇器對象中的文件路徑。網頁瀏覽器控件點擊

我試圖得到HtmlElement,但我沒有在源代碼中找到元素Id。

編輯:

在網上有「瀏覽...」按鈕,打開文件選擇器,然後將文件路徑呈現在小的文本提交,我想注入的文件路徑我自己到文本字段。

+0

什麼是真正的目標? - 或者,你想達到什麼樣的? –

+0

我希望應用程序能夠以編程方式選擇將被選擇的文件,然後將其上傳,而不是選擇文件並上傳它(因爲我想執行多個上傳,文件後文件) – MTA

+1

爲什麼你不使用WebClient(http://msdn.microsoft.com/en-us/library/system.net.webclient.aspx)。?您可以上傳文件(http://msdn.microsoft.com/en-us/library/system.net.webclient.uploadfile.aspx)並設置請求標頭(http://msdn.microsoft.com/en-us /library/system.net.webclient.headers.aspx)作爲瀏覽器。 – 2011-12-13 09:52:01

回答

0

首先。 爲要更改值的元素建立名稱,標識或類。有很多方法可以做到這一點。我會爲firefox或IE開發人員工具欄使用firebug,或者只是查看頁面的源代碼並確定該字段的名稱/標識是什麼。現在,如果該字段沒有可以使用的名稱或ID,則可能可以獲取包含的元素並通過子元素迭代n次,直到獲得所需的元素。

對於我的嵌入式瀏覽應用程序我沒有在C#中的以下內容: -

// webBrowser is the name of the embedded IE browser in your app 
var htmlDocument = webBrowser.Document; 
if(htmlDocment!=null) 
{ 
    var field = htmlDocument.GetElementById("...the id..."); 
    if(field!=null) 
    { 
     field.SetAttribute("value","...yourfilenamepathonyourmachine..."); 
    } 

    // Now you would need to establish the ID of the submit element and click that 
    var submitButton = htmlDocument.GetElementById("...submit button..."); 
    if(submitButton!=null) 
    { 
     submitButton.InvokeMember("Click"); 
    } 
    // your code to loop? 
} 

那麼,你有問題的網頁的HTML?這可能幫助和更好的答案可以給

問候朱利安

+0

我試圖使用它,但我無法找到這個元素在源html中的id – MTA

+0

這種方法不會工作,值屬性是隻讀的文件輸入,請參閱http://msdn.microsoft.com /en-us/library/ms535126(v=VS.85).aspx。 –

+0

盛江...有趣的是,你應該說這不起作用,這是生產代碼,並很好地工作謝謝 –

相關問題