VBS 菜鸟问题:如何获取javascript弹出窗口的动态url

wnchg 2009-02-10 09:34:49
问题描述:
希望通过vbs实现程序点击网页的一个span,点击该span后会弹出一个新页面,找到该页面的“确定”按钮,点击。


查看网页的源文件,显示如下
……
<div class='r wysft' style='margin-right:1px;'><span onclick='javascript:buyslave(6148564);' style='cursor:pointer;'>我要购买她</span></div>
<div class="c"></div>
……

弹出新页面url如下:
http://www.kaixin001.com/slave/buy_dialog.php?slaveuid=6148564&verify=6148564_1028_4636452_1234271335_cc12edf8d55a8c6fd03a9bce49125d22&rand=0.1424970535857335

注意这里有参数&verify以及&rand

原本想直接根据url定位新页面,然后再找到“确认”按钮点击,但问题是该url,当天执行有效,第二天就无效了。(猜测是&verify、&rand参数的缘故)

我的代码如下:
b1.Navigate2 ("弹出新页面url")

Set vDoc = b1.Document

For i = 0 To vDoc.All.length - 1 '检测所有标签

If UCase(vDoc.All(i).tagName) = "INPUT" Then

Set vTag = vDoc.All(i)

If vTag.Name = "submit" Then
t3 = vTag.Value
'找到提交按钮

vTag.Select '也可以没有这个


vTag.Click
End If

End If

Next i
...全文
298 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
etz2008 2009-04-01
  • 打赏
  • 举报
回复
学习一下
www.xizi123.cn
善缘2022 2009-03-04
  • 打赏
  • 举报
回复
学习下。帮顶
  • 打赏
  • 举报
回复
用正则
"(.+?)g_verify=\"([^"]+)\"(.+?)"


使用replace只保留$2
  • 打赏
  • 举报
回复
用正则
"(.+?)g_verify=\"([^"]+)\"(.+?)"


使用replace只保留$2
wnchg 2009-02-28
  • 打赏
  • 举报
回复
偶现在是采用文本查找的方法,实现了功能(从vDoc 获取var g_verify的值),但比较土,欢迎各位能提出更好方法。

Set vDoc = b1.Document
i = 0
Do While True '检测所有标签
'For i = 0 To vDoc.All.length - 1

If UCase(vDoc.All(i).tagName) = "SCRIPT" Then

'If vDoc.All(i).Type = "text/javascript" Then
Dim SearchString
SearchString = vDoc.All(i).Text '找到包含 g_verify的字符串即可

If InStrRev(SearchString, "g_verify") > 0 Then '找到含有参数g_verify的字符串
pos1 = InStr(1, SearchString, """") '找到第一个引号
pos2 = InStr(pos1 + 1, SearchString, """") '找到第二个引号
s_verify = Mid(SearchString, pos1 + 1, pos2 - pos1 - 1) '获取参数值
'MsgBox (s_verify)

Exit Do
End If
'End If

End If
i = i + 1
If i > vDoc.All.length - 1 Then Exit Do
Loop
gengzhw 2009-02-24
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wnchg 的回复:]
7楼讲的是vbs的实现方法么,好像语法不像是vb滴……
[/Quote]
7楼用的javascript,你可以用VBS同样实现啊
wnchg 2009-02-20
  • 打赏
  • 举报
回复
7楼讲的是vbs的实现方法么,好像语法不像是vb滴……
biweilun 2009-02-17
  • 打赏
  • 举报
回复
用vbs的正则表达式好了
杨哥儿 2009-02-16
  • 打赏
  • 举报
回复
/*
  *函数功能:从href获得参数
  *sHref: http://www.yesky.com/arg.htm?arg1=d&arg2=re
  *sArgName:arg1, arg2
  *return: the value of arg. d, re
  */
  function GetArgsFromHref(sHref, sArgName)
  {
  var args = sHref.split("?");
  var retval = "";
  if(args[0] == sHref) /*参数为空*/
  {
  return retval; /*无需做任何处理*/
  }
  var str = args[1];
  args = str.split("&");
  for(var i = 0; i < args.length; i ++)
  {
  str = args[i];
  var arg = str.split("=");
  if(arg.length <= 1) continue;
  if(arg[0] == sArgName) retval = arg[1];
  }
  return retval;
  }
杨哥儿 2009-02-16
  • 打赏
  • 举报
回复
从vDoc 获取var g_verify的值 "16657713_1028_15572944_1234788051_9bae4849cee37fec1789a89aaa2566ff"
用document.location.search 得到
"? slaveuid=6148564&verify=6148564_1028_4636452_1234271335_cc12edf8d55a8c6fd03a9bce49125d22&rand=0.1424970535857335

",这样你用split(s,"&")和split(s,"=")就能够得到g_verify的值
wnchg 2009-02-16
  • 打赏
  • 举报
回复
我的问题不知到描述清楚了么,再补充一下:
url我已获得http://www.kaixin001.com/app/app.php?aid=1028&url=index.php&uid=16657
查看该url源文件可以看到
<script type="text/javascript">
var g_verify = "16657713_1028_15572944_1234788051_9bae4849cee37fec1789a89aaa2566ff";
</script>

我先用b1.Navigate2 ("http://www.kaixin001.com/app/app.php?aid=1028&url=index.php&uid=16657")
然后 Set vDoc = b1.Document
我想从vDoc 获取var g_verify的值 "16657713_1028_15572944_1234788051_9bae4849cee37fec1789a89aaa2566ff"

wnchg 2009-02-16
  • 打赏
  • 举报
回复
楼上能否讲详细点,偶是菜鸟
杨哥儿 2009-02-15
  • 打赏
  • 举报
回复
参数有问题,
用document.location 获得url参数,然后再处理!
wnchg 2009-02-15
  • 打赏
  • 举报
回复
我看了html后才发现原来这个verify是这样写的:
...
<script type="text/javascript">
var g_verify = "6148564_1028_4636452_1234271335_cc12edf8d55a8c6fd03a9bce49125d22";
.....
关键是如何从HTML取得g_verify的值。

取到这个值后,进而生成该url,打开网页。
Even713 2009-02-11
  • 打赏
  • 举报
回复
帮顶!

4,008

社区成员

发帖
与我相关
我的任务
社区描述
它是一种微软环境下的轻量级的解释型语言,它使用COM组件、WMI、WSH、ADSI访问系统中的元素,对系统进行管理。
社区管理员
  • vbScript社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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