VB里使用WebBrowser控件自动点击网页按钮。

IYFJBXKU 2008-09-22 05:46:41
asp页面代码:
<TABLE id=task_menu 省略代码>
<TBODY>
<TR>
<TD 省略代码>
<DIV align=center>巡查 </DIV> </TD> </TR> </TBODY> </TABLE>

希望可以自动点击这个TABLE构造的按钮。
...全文
1790 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
IYFJBXKU 2008-10-07
  • 打赏
  • 举报
回复
其实大家的都没错。我知道为什么有些按钮点不上了。因为这游戏设计时就考虑到防止自动玩了。。
问题是不知道他怎么做到的。又怎么破解。。
我准备向底层考虑。直接向服务器发送post信息。
liquoryellow 2008-09-27
  • 打赏
  • 举报
回复
我不赚你的分了,写的那么明白都弄不出来。
17楼说的没错。
我吐血去了。
IYFJBXKU 2008-09-27
  • 打赏
  • 举报
回复
不好意思。我水平有点低。我自己再仔细看看。
人老了,不中用了。
liquoryellow 2008-09-26
  • 打赏
  • 举报
回复



'还有确保set doc = pDisp.document语句必须在web_DocumentComplete事件调用完成了。不然出问题的。
zhju3507 2008-09-26
  • 打赏
  • 举报
回复
Dim m_bolComplete As Boolean
Dim m_bolError As Boolean

Private Sub Command1_Click()
m_bolComplete = False
m_bolError = False
WebBrowser1.Navigate2 "news.sohu.com"

While Not m_bolComplete
DoEvents
Wend

MsgBox m_bolError
End Sub

Private Sub Form_Load()

End Sub

Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
m_bolComplete = True
End Sub

Private Sub WebBrowser1_NavigateError(ByVal pDisp As Object, URL As Variant, Frame As Variant, StatusCode As Variant, Cancel As Boolean)
m_bolError = True
End Sub
liquoryellow 2008-09-26
  • 打赏
  • 举报
回复
我告诉你为什么会这样,分明没有把MSHTML对象引用进来。

要么就把as xxx去掉,要么 “工程”-> "引用" -> “Microsoft HTML Object Library” 引入进来。

IYFJBXKU 2008-09-26
  • 打赏
  • 举报
回复
奇怪。这么多办法怎么都不管用。。
能不能给个全一点的?
无·法 2008-09-26
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 liquoryellow 的回复:]
如果DocumentComplete事件完成了,楼上的就可能对,如果没完成,那就错。
还有一点最重要,pDisp包含每个连接相应的document。而webbrowser1则只是主网址
相应的document,无法获得里面frame等子网址的document.
[/Quote]
可以结合url再判断
liquoryellow 2008-09-26
  • 打赏
  • 举报
回复
如果DocumentComplete事件完成了,楼上的就可能对,如果没完成,那就错。
还有一点最重要,pDisp包含每个连接相应的document。而webbrowser1则只是主网址
相应的document,无法获得里面frame等子网址的document.
jjyq2004 2008-09-26
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
Dim i As Integer
For i = 0 To WebBrowser1.Document.All.length - 1
On Error Resume Next
If WebBrowser1.Document.All(i).tagname = "TABLE" Then
If WebBrowser1.Document.All(i).Id = "task_menu" Then
WebBrowser1.Document.All(i).Click
End If
End If
Next
End Sub
这个对的
liquoryellow 2008-09-25
  • 打赏
  • 举报
回复
Option Explicit

Dim WithEvents tabElement As HTMLTable

Private Sub Form_Load()

web.Navigate "指定的网址"

End Sub

Private Function tabElement_onclick() As Boolean

Debug.Print "aaaaa"

End Function

Private Sub web_DocumentComplete(ByVal pDisp As Object, URL As Variant)

Dim i As Integer
Dim doc As IHTMLDocument2
Dim elements As IHTMLElementCollection
Dim element As IHTMLElement

Set doc = pDisp.Document
Set elements = doc.All.tags("table")
Set element = elements(0)
Set tabElement = element

If Not (element Is Nothing) Then

element.Click

End If

End Sub

根据获取table的点击事件,可以知道点击上了。 如果没达到效果,那么就把doc.All.tags("table")改为doc.All.tags("div")这里只获得了第一个table,你也可以根据其他特点获得指定的table。绝对可以用。
zt11zfx 2008-09-25
  • 打赏
  • 举报
回复
我做过 这样的项目 , 实现方式 是手动点击网页的一个地方,用vb把鼠标的动作记录下来,然后模拟鼠标自动点击
IYFJBXKU 2008-09-25
  • 打赏
  • 举报
回复


楼上。怎么会这样呢?
打死不掉牙 2008-09-23
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
Dim i As Integer
For i = 0 To WebBrowser1.Document.All.length - 1
On Error Resume Next
If WebBrowser1.Document.All(i).tagname = "TABLE" Then
If WebBrowser1.Document.All(i).Id = "task_menu" Then
WebBrowser1.Document.All(i).Click
End If
End If
Next
End Sub
IYFJBXKU 2008-09-23
  • 打赏
  • 举报
回复
但我仍希望有人能够写出模拟点击的代码。
IYFJBXKU 2008-09-23
  • 打赏
  • 举报
回复
这个,我想到一个很BT的解决办法了。那就是
WebBrowser1.Navigate2 "http://sg.game.com.cn/xuncha.asp"
IYFJBXKU 2008-09-23
  • 打赏
  • 举报
回复
asp页面代码:
<TABLE id=task_menu height=34 cellSpacing=0 cellPadding=0 width=69 border=0>
<TBODY>
<TR>
<TD onmouseover="javascript:this.background='images/btn_14_on.jpg';" style="CURSOR: hand" onclick="javascript:top.warreport.document.location.href='xuncha.asp'" onmouseout="javascript:this.background='images/btn_14.jpg';" background=images/btn_14.jpg>
<DIV align=center>巡查</DIV></TD></TR></TBODY></TABLE>
无·法 2008-09-23
  • 打赏
  • 举报
回复
TABLE标签难道有Click方法??第一次听说,楼主你 把代码贴全一点吧,这个帖子应该放的下
IYFJBXKU 2008-09-23
  • 打赏
  • 举报
回复
奇怪的事情来了。
用sulipeng007 的方法不管用。没反应。
更奇怪的是把On Error Resume Next 注释掉也一样。。。
liquoryellow 2008-09-23
  • 打赏
  • 举报
回复
如果再FRAME里面,那么用事件的的参数pDisp.Document.All(i).Click
加载更多回复(1)

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧