2011-12-13 161 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

盛江...有趣的是,你应该说这不起作用,这是生产代码,并很好地工作谢谢 –

相关问题