51Testing软件测试论坛

标题: 拿一小段代码出来研究一下。 [打印本页]

作者: jackymail    时间: 2007-9-7 16:54
标题: 拿一小段代码出来研究一下。
在一个web的文件服务器上,取连接。
http://webfileip/web/bat/
http://webfileip/web/msi/
http://webfileip/web/swd/
http://webfileip/web/linux/
http://webfileip/web/exe/
大致的目录结构如上,看我取得方法合理吗?

Public function getlinks(byval ptype)
SystemUtil.Run "C:\Program Files\Internet Explorer\iexplore.exe",Corelinkweb&ptype,"C:\Documents and Settings\Administrator","open"
browser("WebServer").SetTOProperty "name",".*"&ptype
browser("WebServer").Page("WebServer").SetTOProperty "title",".*"&ptype
set linkobj=browser("WebServer").Page("WebServer").Object.links
i=1
For each linkitem in linkobj
        If i>1 Then
                create_pac linkitem,ptype
        End If
        i=i+1
Next
browser("WebServer").Close
End Function
作者: yabest    时间: 2007-9-7 17:21
代码太难看了,挤成一团sdlkfj7
作者: rivermen    时间: 2007-9-7 17:23
create_pac 这个sub是怎么样的?

ps:循环当中linkitem 所有的链接都是主页面上的

一旦第一个链接点击之后,当前页面会不会发生跳转呢?

而下一个循环时,linkitem 仍然是主页面上的链接,于是会产生在当前页面找不到链接的错误
作者: jackymail    时间: 2007-9-7 17:32
Dim parray
parray=array("/bat/","/exe/","/msi/","/linux/","/swd/")
For each ptype in parray
getlinks ptype
Next

Public function getlinks(byval ptype)
SystemUtil.Run "C:\Program Files\Internet Explorer\iexplore.exe",Corelinkweb&ptype,"C:\Documents and Settings\Administrator","open"
browser("WebServer").SetTOProperty "name",".*"&ptype
browser("WebServer").Page("WebServer").SetTOProperty "title",".*"&ptype
set linkobj=browser("WebServer").Page("WebServer").Object.links
i=1
For each linkitem in linkobj
        If i>1 Then
                create_pac linkitem,ptype
        End If
        i=i+1
Next
browser("WebServer").Close
End Function

Private function Create_pac(linkitem,ptpye)
   Select Case ptype
      Case "/exe/"     ptype="Executable"
      Case "/bat/"      ptype="Batch File"
          Case "/swd/"     ptype="SWD Package"
          Case "/linux/"     ptype="Linux"
          Case "/msi/"     ptype="MSI"
   End Select


Browser("L").Page("sm").Frame("left").Link("Distribution").Click
Browser("L").Page("sm").Frame("distributionPackagesTree").WebElement("My distribution packages").Click
Browser("L").Page("sm").Frame("findfrm").Link("New").Click
Browser("D").Page("D").Sync
Browser("D").Page("D").WebList("DropDownListPkgType").Select ptype
Browser("D").Page("D").WebEdit("_packageNameTextBox").Set linkitem
Browser("D").Page("D").WebEdit("_descriptionTextBox").Click
Browser("D").Page("D").WebEdit("_descriptionTextBox").Set linkitem
Browser("D").Page("D").WebEdit("_primaryFileTextBox").Click
Browser("D").Page("D").WebEdit("_primaryFileTextBox").Set linkitem
Browser("D").Page("D").WebButton("Save").Click
End Function
谢谢,请多指教,指明所有问题。
没有link的点击事件发生。只有取当前页上连接的过程,取到所有的以后就把网页关了,下次循环又重新打开另一个。
我想知道能否在http//webfileip/web上直接一级一级向下取。。。
还有就是我的结构有什么问题没有。
最后就是变量,ptype我重复多次使用。
还有最开始的赋值调用。。
总之谁看到问题都给指点一下吧、
yabest,别光说不练,给我修改一下看看。

原帖由 rivermen 于 2007-9-7 17:23 发表
create_pac 这个sub是怎么样的?

ps:循环当中linkitem 所有的链接都是主页面上的

一旦第一个链接点击之后,当前页面会不会发生跳转呢?

而下一个循环时,linkitem 仍然是主页面上的链接,于是会产生在 ...

[ 本帖最后由 jackymail 于 2007-9-7 17:37 编辑 ]
作者: yabest    时间: 2007-9-7 17:36
原帖由 jackymail 于 2007-9-7 17:32 发表
...
yabest,别光说不练,给我修改一下看看。
...


看不懂,头大sdlkfj7
作者: yabest    时间: 2007-9-8 06:59
呵呵,感觉你太懒了,代码不写清楚一点,让人看着很吃力!多敲几个字符很累人吗?
帮你修改了一下,看看怎样?


  1. Dim PackageTypeArray, PackageNameArray
  2. Dim Corelinkweb
  3. Dim WebFileIP

  4. WebFileIP = "10.20.30.40"
  5. Corelinkweb = "http://" & WebFileIP & "/web"

  6. PackageTypeArray= Array("bat", "exe", "msi", "linux", "swd")
  7. packageNameArray = Array("Batch File", "Executable", "MSI", "Linux", "SWD Package")

  8. 'Loop to save links of each package page
  9. For packageIndex = 0 to UBound(packageTypeArray)
  10.   curPackageType = PackageTypeArray(packageIndex)
  11.   curPackageName = packageNameArray(packageIndex)
  12.   call SavePackagePageLinks(curPackageType, curPackageName)
  13. Next

  14. Public Function SavePackagePageLinks(ByVal PackageType, ByVal PackageName)
  15.   Dim packageDir, packageUrl
  16.   Dim iePath
  17.   Dim linkIndex, curLink

  18.   packageDir =  "/" & PackageType & "/"
  19.   packageUrl = Corelinkweb & packageDir
  20.   iePath = ""C:\Program Files\Internet Explorer\iexplore.exe"

  21.   'Open the package page
  22.   SystemUtil.Run iePath, packageUrl , "C:\Documents and Settings\Administrator", "open"

  23.   'Init the OR object
  24.   Browser("WebServer").SetTOProperty "name", ".*" & packageDir
  25.   Browser("WebServer").Page("WebServer").SetTOProperty "title", ".*" & packageDir

  26.   'Loop to save each link of package page, skip the first link
  27.   Set packagePageLinks = browser("WebServer").Page("WebServer").Object.links
  28.   For linkIndex = 1 to UBound(packagePageLinks)
  29.       curLink = curPageLinks(linkIndex)
  30.       Browser("L").Page("sm").Frame("left").Link("Distribution").Click
  31.       Browser("L").Page("sm").Frame("distributionPackagesTree").WebElement("My distribution packages").Click
  32.       Browser("L").Page("sm").Frame("findfrm").Link("New").Click
  33.       Browser("D").Page("D").Sync
  34.       Browser("D").Page("D").WebList("DropDownListPkgType").Select PackageName
  35.       Browser("D").Page("D").WebEdit("_packageNameTextBox").Set curLink
  36.       Browser("D").Page("D").WebEdit("_descriptionTextBox").Set curLink
  37.       Browser("D").Page("D").WebEdit("_primaryFileTextBox").Set curLink
  38.       Browser("D").Page("D").WebButton("Save").Click
  39.   Next

  40.   'Close browser
  41.   Browser("WebServer").Close

  42. End Function

复制代码

[ 本帖最后由 yabest 于 2007-9-8 07:20 编辑 ]
作者: 423799223    时间: 2007-9-8 07:54
纯是拿QTP做编程工具了
无语
作者: jackymail    时间: 2007-9-10 10:19
学习了。。。。

原来去掉第一个数组是通过从arrayindex调整就可以了。。我还if ...>1呢。
把变量命名清楚一点是很好。


原帖由 yabest 于 2007-9-8 06:59 发表
呵呵,感觉你太懒了,代码不写清楚一点,让人看着很吃力!多敲几个字符很累人吗?
帮你修改了一下,看看怎样?


Dim PackageTypeArray, PackageNameArray
Dim Corelinkweb
Dim WebFileIP

WebFileIP = ...





欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2