我在我的项目中使用网页浏览器控件,并打开一个具有文件选择器对象的网页。 现在我想以编程方式注入此文件选择器对象中的文件路径。网页浏览器控件点击
我试图得到HtmlElement
,但我没有在源代码中找到元素Id。
编辑:
在网上有“浏览...”按钮,打开文件选择器,然后将文件路径呈现在小的文本提交,我想注入的文件路径我自己到文本字段。
我在我的项目中使用网页浏览器控件,并打开一个具有文件选择器对象的网页。 现在我想以编程方式注入此文件选择器对象中的文件路径。网页浏览器控件点击
我试图得到HtmlElement
,但我没有在源代码中找到元素Id。
在网上有“浏览...”按钮,打开文件选择器,然后将文件路径呈现在小的文本提交,我想注入的文件路径我自己到文本字段。
首先。 为要更改值的元素建立名称,标识或类。有很多方法可以做到这一点。我会为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?这可能帮助和更好的答案可以给
问候朱利安
我试图使用它,但我无法找到这个元素在源html中的id – MTA
这种方法不会工作,值属性是只读的文件输入,请参阅http://msdn.microsoft.com /en-us/library/ms535126(v=VS.85).aspx。 –
盛江...有趣的是,你应该说这不起作用,这是生产代码,并很好地工作谢谢 –
什么是真正的目标? - 或者,你想达到什么样的? –
我希望应用程序能够以编程方式选择将被选择的文件,然后将其上传,而不是选择文件并上传它(因为我想执行多个上传,文件后文件) – MTA
为什么你不使用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