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

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

查看: 4749|回复: 2

[咨询站长] C#能不能直接把webbrowser对象传入一个方法内部呢?

[复制链接]
发表于 2015-3-16 19:49:24 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 我是MT 于 2015-3-16 19:59 编辑

我这里的webbrowser使用的是webkitbrowser控件。由于需要让浏览器执行一些js动作。这些代码非常冗长,每次使用都要去复制粘贴一下,考虑到C#面向对象的特性。我做了一个类,然后想把这些动作给封装起来方便调用: 2015-03-16_192500.jpg

比如,浏览器在文本框中输入值,然后点击文本框旁边的“搜索”按钮这两个动作的代码: 2015-03-16_195036.jpg
[C#] 纯文本查看 复制代码
  string script = "document.getElementById('mq')." + "value=\"" + textBox1.Text + "\"";
            webKitBrowser1.StringByEvaluatingJavaScriptFromString(script);

            script = "var btn=document.getElementsByTagName('button');btn[0].click();";
            webKitBrowser1.StringByEvaluatingJavaScriptFromString(script);


我写了一个类,里面有个方法。类似这样子的:
[C#] 纯文本查看 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using WebKit;

namespace HelloTmall
{
    public  class Action
    {
       /// <summary>
       /// 搜索
       /// </summary>
       /// <param name="text">搜索关键词</param>
       /// <param name="webKitBrowser1">实例化的webkit对象</param>
        public void search(string text, WebKitBrowser webKitBrowser1)
        {
            string script = "document.getElementById('mq')." + "value=\"" + text + "\"";
            webKitBrowser1.StringByEvaluatingJavaScriptFromString(script);

            script = "var btn=document.getElementsByTagName('button');btn[0].click();";
            webKitBrowser1.StringByEvaluatingJavaScriptFromString(script);
        }

    }
}


我这么使用: 2015-03-16_195538.jpg
我试过了,无法执行。报错。 2015-03-16_195732.jpg

问题是这个webKitBrowser1已经是form加载的时候画出来,实例化了。如果这里再实例化的话,应该不对吧。




1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2015-3-17 08:15:24 | 显示全部楼层
不用传这个对象吧,你的目的是封装JS,那就直接封装JS部分

在事件里执行这句
webKitBrowser1.StringByEvaluatingJavaScriptFromString(script);
回复

使用道具 举报

 楼主| 发表于 2015-3-17 08:58:13 | 显示全部楼层
站长苏飞 发表于 2015-3-17 08:15
不用传这个对象吧,你的目的是封装JS,那就直接封装JS部分

在事件里执行这句

好的。把JS搞定即可。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-5-15 16:17

© 2014-2021

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