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

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

查看: 13894|回复: 12

[其他] webbrowser模拟click一个控件没反应

[复制链接]
发表于 2014-12-27 13:00:53 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 2949497060 于 2014-12-27 13:02 编辑

我在访问这个页面http://www.daodao.com/Hotel_Revi ... nchang_Jiangxi.html时,有一个控件“更多”如图 1.jpg ,点一下后会动态加载一些数据变成 2.jpg ,但是我通过webbrowser已经获取到这个控件,再使用htmlelment.InvokeMember("click")却没有反应,目前只能通过模拟鼠标点击才有反应,请问怎么解决呢?用抓包的方式这里就不用讲了,目前主要是想了解用webbrowser的方式能不能实现点击成功的效果。



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
 楼主| 发表于 2014-12-27 13:40:43 | 显示全部楼层
没人来,先自己顶一下。。。。是不是webbrowser里面有的控件只响应鼠标点击,不响应invokeMember("click")呢?不知道哪位遇到过这个情况没有?
回复

使用道具 举报

发表于 2014-12-27 16:49:36 | 显示全部楼层
应该是没有找准标签吧
回复

使用道具 举报

 楼主| 发表于 2014-12-27 16:51:54 | 显示全部楼层
站长苏飞 发表于 2014-12-27 16:49
应该是没有找准标签吧

标签是找准了的,已经提取到innertext是“更多”,以及outerhtml也做了对比,是一致的
回复

使用道具 举报

 楼主| 发表于 2014-12-27 17:04:17 | 显示全部楼层
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            txtUrl.Text = "http://www.daodao.com/Hotel_Review-g297446-d651294-Reviews-or30-Galactic_Peace_International_Hotel-Nanchang_Jiangxi.html";
            wbrr1.Navigate(txtUrl.Text);
        }

        private void btnRedirect_Click(object sender, EventArgs e)
        {
            wbrr1.Navigate(txtUrl.Text);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            HtmlElementCollection elmts = wbrr1.Document.GetElementsByTagName("span");
            foreach (HtmlElement elmt1 in elmts)
            {
                if (Regex.IsMatch(elmt1.OuterHtml, "'review_48438299',"))
                {
                    MessageBox.Show("找到第1个‘更多’的span,outerhtml为\r\n" + elmt1.OuterHtml);
                    break;
                }
            }
        }

    }
这是代码,可以找到标签提示出来outerhtml是:
<SPAN class=partnerRvw onclick="_gaq = _gaq || [];_gaq.push(['_trackEvent', 'Expand User Review','Click']);"><SPAN class="taLnk hvrIE6 tr48438299 moreLink" onclick="ta.util.cookie.setPIDCookie(2247);ta.call('ta.servlet.Reviews.expandReviews',event,this,'review_48438299', '1')">更多 </SPAN><IMG class="textArrow_more sprite-text_arrow_dropdown_blu" alt="" src="http://cc1.ddcdn.com/img2/x.gif"> </SPAN>
回复

使用道具 举报

 楼主| 发表于 2014-12-27 17:07:13 | 显示全部楼层
把窗口文件一起传上,麻烦飞哥帮忙看下呢

WebBrowserTest.rar

2.17 KB, 下载次数: 20, 下载积分: 金钱 -1

回复

使用道具 举报

 楼主| 发表于 2014-12-27 17:12:10 | 显示全部楼层
找到原因了,它是在一个父级span里,我找到父标签去了,所以click无效,多谢飞哥提醒哈
回复

使用道具 举报

发表于 2014-12-28 10:21:06 | 显示全部楼层
呵呵,
我刚看到周六周日休息了,是找错了,应该是找到这个就够了<SPAN class="taLnk hvrIE6 tr48438299 moreLink" onclick="ta.util.cookie.setPIDCookie(2247);ta.call('ta.servlet.Reviews.expandReviews',event,this,'review_48438299', '1')">更多 </SPAN>

这个其实有技巧的,不是看看JS或者是Onclick事件在那个标签就找那个就行了。首先不是找标签,而是找Click事件 这样不容易出这样的问题
回复

使用道具 举报

 楼主| 发表于 2014-12-28 11:02:28 | 显示全部楼层
站长苏飞 发表于 2014-12-28 10:21
呵呵,
我刚看到周六周日休息了,是找错了,应该是找到这个就够了更多

“首先不是找标签,而是找Click事件 这样不容易出这样的问题”,飞哥,你所说的“先找Click事件”,是指的在遍历这种标签的outerHtml的时候通过匹配字符串的"onclick=***"这种方式去找,还是通过其它方式去找?
回复

使用道具 举报

发表于 2014-12-28 13:10:19 | 显示全部楼层
2949497060 发表于 2014-12-28 11:02
“首先不是找标签,而是找Click事件 这样不容易出这样的问题”,飞哥,你所说的“先找Click事件”,是指 ...

不是,我的意思是你先能清楚,单击事件在那个标签上,这个要分析Html代码,不是能看界面
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 12:54

© 2014-2021

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