苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

查看: 5692|回复: 4

[其他] vbnet webbrowser不能正常跳转链接中页面

[复制链接]
发表于 2017-1-23 00:03:37 | 显示全部楼层 |阅读模式
本帖最后由 weizhuce 于 2017-1-23 00:11 编辑

亲爱滴站长及广大盆友,我有三个小问题想请教下站长及对此了解的盆友。希望各位能帮我解决这个问题如题:


系统:win7  64bit
软件:vs2013版
语言:vbnet

概述:最近编一个网页表单数据填写小软件,需要用到webbrowser但是碰到一些问题

第一个问题,也是最主要的问题
在vbnet中建立webbrowser1(简称wbr1),webbrowser2(简称wbr2)打开指定网站(内网,需要账号密码登录)在wbr1中输入账号密码登录成功后在查询数据之后新打开的页面(即wbr2)始终不能跳转到连接中指定的地址中(在浏览器中完全正常)在点击本该跳转的页面时却执行的是当前页面的重新打开(即wbr2中显示的查询数据的页面)。

部分网页源码如下:
WebBrowser所获取的地址  WebBrowser1.Document.Url.AbsoluteUri        "http://10.18.19.110:119/EHR_Arch_BasicInfo/index.jsp"(当前地址)        String
当前链接1元素源码<A href="javascript:void openDetail('2016122561040028553' , 'XXXXXXXXXXXXXXXXXX')">个人中心_<FONT color=red>链01</FONT></A>
当前链接2元素源码<A href="javascript:void browseDetail('2016122561040028553', 'XXXXXXXXXXXXXXXXXX')">充值中心_<FONT color=red>链02</FONT></A>
实际地址(复制于浏览器)http://10.18.19.110:119/EHR_Arch ... XXXXXXX&opType=jkda

<SPAN style="WIDTH: 163px" title=SPAN_13><A href="javascript:void openDetail('2016122561040028553' , 'XXXXXXXXXXXXXXXXXX)">个人中心_<FONT color=red>链01</FONT></A> | <A href="javascript:void browseDetail('2016122561040028553', 'XXXXXXXXXXXXXXXXXX')">充值中心_<FONT color=red>链02</FONT></A></SPAN>

备注以上数据中XXXXXXXXXXXXXXXXXX为身份证号码

我抓取网页数据包得到的数据是
1.get  http://10.18.19.110:119/EHR_Arch ... XXXXXXX&opType=jkda
2.返回 http:/10.11.2017  ok
3.get  http://10.18.19.110:119/common/default.html
4.返回 http:/10.11.2017  ok
5.get  http://10.18.19.110:119/EHR_Arch ... 0.33570838331545283
6.返回 http:/10.11.2017  ok

以上数据中的详细内容大致就是读取cookie,保持连接,计算机系统信息,登录用户名等等之类的
现在的问题就是在wbr中我点击连接01和02不能获取 实际地址(复制于浏览器),而获取的是WebBrowser所获取的地址  WebBrowser1.Document.Url.AbsoluteUri        "http://10.18.19.110:119/EHR_Arch_BasicInfo/index.jsp"(当前地址),实际地址应该是个js拼接的
但是我认为我不需要了解他是怎么获取的这个连接,我只需要你按照自己将要跳转页面前在事件WebBrowser1_NewWindow把地址赋值给newurl就可以了,问题是我为什么不能获取我要的地址,而浏览器却可以。求解。


第二个问题,对于类似于网页注册页面中的<国家><省市><区县>的联动代码怎么写,以腾讯注册页面国家选择联动为例(https://ssl.zc.qq.com/chs/
Me.WebBrowser1.Document.GetElementById("country_value").SetAttribute("value", "阿富汗")
Me.WebBrowser1.Document.GetElementById("country_value").RaiseEvent("onchange")

执行后不能实现联动,为何?

第三个问题,这个内网中有一个菜单,菜单下有子菜单,这个菜单不需要点击只要把鼠标放在菜单上他就触发显示下拉菜单,然后就可以选择子项,我所选择的子项就是在这个菜单中,我的问题是怎样用webbrowser实现鼠标放在上面不点击就可以触发此事件,或者说怎么可以模拟直接执行子项的点击事件。

我是真心实意的求救,还请大神指点,不然就会被公司开除了,拜托站长和朋友们了
有什么问题可以给我发邮件zhucemazhijia@qq.com,再次感谢你们了





1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2017-1-23 15:58:54 | 显示全部楼层
填表法操作用的不多,几乎不会。
直接GET、POST是否可行?是否更好些呢?希望能有熟悉填表的朋友能帮助你。
发表于 2017-1-24 22:20:20 | 显示全部楼层
本帖最后由 小哲 于 2017-1-24 22:25 编辑

大概意思我懂了,不难实现,你们公司的地址还是内网,我并看不到啊,无法帮你模拟操作,还有我不会vb.net啊 爱莫能助。说下思路:让w1和w2的cookie共享就行了、然后用填表模拟浏览器操作事件
 楼主| 发表于 2017-1-25 21:09:59 | 显示全部楼层
小哲 发表于 2017-1-24 22:20
大概意思我懂了,不难实现,你们公司的地址还是内网,我并看不到啊,无法帮你模拟操作,还有我不会vb.net啊 ...

现在的关键不在怎么做填表,而是怎样跳转到js合成的url中,,,,,这几天正在看关注js代码注入和执行
发表于 2017-2-3 09:02:43 | 显示全部楼层
WebBrowser1本身就带有执行JS的功能
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-12-28 10:35

© 2014-2021

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