You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

QTP/UFT技术咨询:如何用描述性编程实现视频自动循环点赞?

如何用QTP/UFT描述性编程实现跨页面/浏览器的批量视频点赞操作?

我需要实现这样的操作:打开一个类YouTube的视频主网站,点击其中一个视频并点击该视频的“点赞”按钮,之后返回主网站,自动对下一个视频执行相同操作。请问能否通过QTP/UFT的描述性编程实现该需求?虽然“点赞”操作一致,但操作所在的浏览器和页面不同,我对此不确定,特向您求助!

我录制的脚本如下:
步骤1. 第一个视频:

Browser("Medien").Page("All Medien").Link("Video 1").Click
Browser("Video 1").Page("Video 1").Button("Like").Click

步骤2. 返回主页并点击第二个视频:

Browser("Video 1").Page("Video 1").Link("back").Click
Browser("Medien").Page("All Medien").Link("Video 2").Click
Browser("Video 2").Page("Video 2").Button("Like").Click

以此类推...

我尝试了三种方法,但都无效:

Browser("micclass:=Browser").Page("micclass:=Page").Button("Like").Click

或

Browser("name:="& parameter).Page("title:="& parameter).Button ("Like").Click

我还尝试通过以下方法获取当前浏览器和页面,但UFT/QTP无法找到目标:

Browser("creationtime:=0").Page("creationtime:=0").Button("Like").Click
Set oBrw=Description.Create
oBrw("micclass").value="Browser"

当然可以用描述性编程实现这个需求!你之前的尝试没成功,主要是因为没有准确区分不同状态的浏览器窗口,也没有合理构建循环遍历视频的逻辑。下面给你一套可行的方案:

核心思路

  1. 先在主页定位所有视频链接,把它们存到一个集合里
  2. 循环遍历每个视频链接:
    • 点击视频打开新窗口/标签页
    • 定位当前活跃的视频页面浏览器,找到点赞按钮并点击
    • 返回主页(或关闭视频窗口),回到主页浏览器继续下一个视频

具体代码实现

' 1. 初始化主页浏览器和页面的描述性对象
Set oHomeBrowser = Description.Create
oHomeBrowser("micclass").Value = "Browser"
oHomeBrowser("name").Value = "Medien" ' 匹配你的主页浏览器名称

Set oHomePage = Description.Create
oHomePage("micclass").Value = "Page"
oHomePage("title").Value = "All Medien" ' 匹配你的主页页面标题

' 2. 获取主页上所有视频链接的集合
Set oVideoLinks = Browser(oHomeBrowser).Page(oHomePage).ChildObjects(Description.Create())
oVideoLinks("micclass").Value = "Link"
' 可以根据视频链接的共同属性过滤,比如name包含"Video"
oVideoLinks("name").Value = "Video.*" ' 正则匹配所有名称带Video的链接

' 3. 循环遍历每个视频链接
For i = 0 To oVideoLinks.Count - 1
    ' 点击第i个视频链接
    oVideoLinks(i).Click
    Wait 2 ' 等待视频页面加载,时间根据实际情况调整
    
    ' 4. 定位当前活跃的视频浏览器窗口(刚打开的那个)
    Set oVideoBrowser = Description.Create
    oVideoBrowser("micclass").Value = "Browser"
    oVideoBrowser("active").Value = True ' 定位当前活跃的浏览器
    
    ' 5. 定位视频页面的点赞按钮并点击
    Set oVideoPage = Description.Create
    oVideoPage("micclass").Value = "Page"
    ' 如果视频页面标题有规律,也可以加title属性过滤,比如包含视频名称
    ' oVideoPage("title").Value = "Video.*"
    
    Set oLikeBtn = Description.Create
    oLikeBtn("micclass").Value = "Button"
    oLikeBtn("name").Value = "Like" ' 匹配点赞按钮的名称
    
    Browser(oVideoBrowser).Page(oVideoPage).Button(oLikeBtn).Click
    Wait 1 ' 等待点赞操作完成
    
    ' 6. 返回主页:点击页面上的back链接,或者关闭当前浏览器窗口
    ' 方法一:点击页面上的back链接
    Browser(oVideoBrowser).Page(oVideoPage).Link("name:=back").Click
    ' 方法二:如果是新窗口,直接关闭
    ' Browser(oVideoBrowser).Close
    Wait 2 ' 等待回到主页
    
    ' 重新获取视频链接集合(防止DOM变化)
    Set oVideoLinks = Browser(oHomeBrowser).Page(oHomePage).ChildObjects(Description.Create())
    oVideoLinks("micclass").Value = "Link"
    oVideoLinks("name").Value = "Video.*"
Next

' 释放对象
Set oHomeBrowser = Nothing
Set oHomePage = Nothing
Set oVideoLinks = Nothing
Set oVideoBrowser = Nothing
Set oVideoPage = Nothing
Set oLikeBtn = Nothing

对你之前尝试的问题解析

  • Browser("micclass:=Browser").Page("micclass:=Page").Button("Like").Click:这个定位太宽泛,UFT会匹配第一个找到的浏览器和页面,不一定是当前的视频页面,所以会失败。
  • Browser("name:="& parameter).Page("title:="& parameter).Button ("Like").Click:如果你的parameter没有精准匹配当前视频浏览器的name和页面title,就会找不到元素,用active属性定位当前活跃窗口会更可靠。
  • Browser("creationtime:=0").Page("creationtime:=0").Button("Like").Click:creationtime:=0指向的是第一个打开的浏览器窗口(也就是你的主页),而非刚打开的视频窗口,自然找不到视频页面的点赞按钮。

额外提示

  • 调整Wait的时间,根据你的页面加载速度来设置,避免因为页面未加载完成导致元素定位失败。
  • 如果视频是在新标签页而非新窗口打开,active属性依然有效,UFT会识别当前活跃的标签页对应的浏览器对象。
  • 可以给元素描述添加更多属性(比如html tag、innertext)来提高定位的准确性,避免误匹配。

内容的提问来源于stack exchange,提问作者Stella 123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:49:33