如何通过webbrowser向网页中的文本框输入字符串?

wxyhm 2010-03-16 04:09:22
其实我想编一个邮箱自动注册程序,可是在第一步使用webbrowser向网页中的文本框输入字符串就失败了,请帮忙解答一下
我的代码如下
Dim ii As Integer

Private Sub Form_Load()
WebBrowser1.Navigate "http://login.sina.com.cn/signup/signup1.php"
End Sub

Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
Dim doc As IHTMLDocument2
Set doc = WebBrowser1.Document
Dim tmp As String

If InStr(doc.body.innerText, "邮箱名称:") > 0 Then
tmp = "sdfsdf23"
doc.All.Item("username").focus
SendKeys tmp

End If



End Sub

运行后,网页提示我输入邮箱名,可我应该已经通过sendkeys添加了啊。我这个哪里不正确呢,
顺便问一句,我如何通过post发送我想要发送的内容呢。谢谢
...全文
496 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
haodizhiii 2010-10-01
  • 打赏
  • 举报
回复
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
On Error GoTo Tiaochu
Dim Zhua As String
Zhua = WebBrowser1.Document.getElementById("user_name").Value '这句比较适用‘
WebBrowser1.Document.All.Item("user_name").Value = "haodizhi@163.com" '邮箱
WebBrowser1.Document.All.Item("password").Value = "haodizhi" '密码
WebBrowser1.Document.All.Item("password2").Value = "haodizhi" '确认密码
WebBrowser1.Document.All.Item("selectQid").Value = "我小学校名全称?" '回答问题,自己根据情况自己改
WebBrowser1.Document.All.Item("pwdA").Value = "不知道" '回答
WebBrowser1.Document.All.Item("nick").Value = "haodizhi" '昵称

'要睡觉了 不写了
Exit Sub
Tiaochu:
End Sub
skylinecn 2010-03-17
  • 打赏
  • 举报
回复
Mark
wxyhm 2010-03-16
  • 打赏
  • 举报
回复
我使用了ReadState,可好像这个值是上一个页面的,不是最新页面的。
wxyhm 2010-03-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 gukuang78 的回复:]
直接用form名称.submit()进行提交即可。
[/Quote]
在你之前试过了,挺有用的。不过还有个最后疑问就是
我在webbrowser中提交后,会打开新的页面,但我不知道什么标志会告诉我新的页面已经打开了。
如何知道呢?
gukuang78 2010-03-16
  • 打赏
  • 举报
回复
直接用form名称.submit()进行提交即可。
wxyhm 2010-03-16
  • 打赏
  • 举报
回复
多谢各位,还想多问一句,如果网页中的submit没有name,如下:
<div class="mt_r">
<input type="submit" class="btn_submit" value="提交" />
</div>
如何处理提交呢?
bcrun 2010-03-16
  • 打赏
  • 举报
回复
关于POST

http://hi.baidu.com/testvbpro/blog/item/5cced5101cd4a5f6c2ce7972.html
现在我们要用到的也是WebBrowser的“Navigate”方法,其函数原型如下所示:

Sub Navigate(URL As String, [Flags], [TargetFrameName], [PostData], [Headers])

大家不妨与第三章中Internet Explorer对象的“Navigate”方法比较一下,一模一样,原来是同一个接口!!

新建一个工程,部件中勾选中 “Microsoft Internet Controls”,添加一个WebBrowser1、一个Command1在窗体上,可以把WebBrowser1适当拉大一点,Form1中添加以下代码:
      Private Sub Command1_Click()

ReDim aByte(0) As Byte ' Array of bytes to hold data to post

cPostData = "login_name=帐号&password=密码&cookietime=0&x=42&y=10"

PackBytes aByte(), cPostData

Dim vPost As Variant

vPost = aByte ' Assign the byte array to a VARIANT

Dim vHeaders As Variant

vHeaders = "Content-Type: application/x-www-form-urlencoded" + Chr(10) + Chr(13)

WebBrowser1.Navigate "http://www.csdn.net/member/logon.asp", , , vPost, vHeaders

End Sub

Private Sub PackBytes(ByteArray() As Byte, ByVal PostData As String)

iNewBytes = Len(PostData) - 1 ' Get rid of the null termination

If iNewBytes < 0 Then

Exit Sub

End If

ReDim ByteArray(iNewBytes)

For i = 0 To iNewBytes

ch = Mid(PostData, i + 1, 1)

If ch = Space(1) Then

ch = "+"

End If

Debug.Print ch, Asc(ch)

ByteArray(i) = Asc(ch)

Next

End Sub

bcrun 2010-03-16
  • 打赏
  • 举报
回复
ebBrowser1.Document.getelementbyid("username").InnerText = "sdfsdf23"
fisheep_works 2010-03-16
  • 打赏
  • 举报
回复
你用http抓包工具看下你提交的数据是哪些
fisheep_works 2010-03-16
  • 打赏
  • 举报
回复
doc.All.Item("username").value="sdfsdf23"

1,502

社区成员

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

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