http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 9871|回复: 4

[其他] webBrowser 如何点击 【浏览】 按钮(file控件)并赋值呢

[复制链接]
发表于 2014-1-6 14:14:01 | 显示全部楼层 |阅读模式
本帖最后由 我们的回忆 于 2014-1-6 14:38 编辑

因为这个项目需要使用webBrowser控件去操作 提交的时候需上传凭证
如图:
QQ图片20140106140326.jpg

描述这一块的内容可以赋值 上传凭证这个点击浏览按钮之后会弹出对话框
QQ图片20140106140457.jpg
选择一个图片文件之后上传凭证框里面的值是这样的
QQ图片20140106140622.jpg
不能通过这样的方法去赋值
webBrowser1.Document.GetElementById("password").SetAttribute("value", "Welcome123");
因为这个没有控件没有ID  查看源文件 这个浏览控件的源码这样的 <td class="Su4" id="file_attachment">
    <input type="file" name="attachment0"/><a href="javascript:void(0)">继续添加</a>
</td>
我通过这样的也是不行
            foreach (HtmlElement ele in webBrowser1.Document.GetElementsByTagName("input"))            {                if (ele.GetAttribute("name") == "attachment0")                {                    ele.SetAttribute("value", @"D:\om_001.jpg");                }            }
这个要怎么才能实现呢 如果可以通过控制鼠标操作也可以



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2014-1-6 14:19:19 | 显示全部楼层
http://www.sufeinet.com/thread-3941-1-1.html你看看第五个应该就是你需要的
发表于 2014-1-6 15:03:08 | 显示全部楼层
用javascript操作,button的点击事件
[C#] 纯文本查看 复制代码
private void button1_Click(object sender, EventArgs e)
        {            webBrowser1.Document.InvokeScript("msgalert", new string[] { "D:\\test.txt" });        }
在webbrowser的页面中写
[JavaScript] 纯文本查看 复制代码
<script type="text/javascript">
    function msgalert(msg) {        document.getElementById("fileUploadInput").setAttribute("value",msg);    }</script>
这样可以通过C/S的按钮点击来调用B/S的javascript来处理,但是你现在要设置input file的value属性,这是无法实现的,因为出于安全性考虑,input file的value值只运行通过点击浏览按钮选择文件来设置,它是只读的,我们是无法给其赋值的。希望能帮得到你。
 楼主| 发表于 2014-1-6 15:11:02 | 显示全部楼层
谢谢 苏飞 的耐心讲解
不知道怎么输出这个 JavaScript方法 能否说的具体点呢
发表于 2014-1-6 15:36:35 | 显示全部楼层
[C#] 纯文本查看 复制代码
  StringBuilder sb = new StringBuilder();
            sb.Append("<script type=\"text/javascript\">");
            sb.Append("    function msgalert(msg) {        document.getElementsByName(\"attachment0\")[0].setAttribute(\"value\",msg);    }</script>");


            webBrowser1.Document.GetElementById("file_attachment").InnerHtml += sb.ToString();
            webBrowser1.Document.InvokeScript("msgalert", new string[] { "D:\\test.txt" });


不过你们要明白这个Value是不能修改的。我看只能通过模拟鼠标了
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-23 20:43

© 2014-2021

快速回复 返回顶部 返回列表