描述性编程,用于单击标题动态更改的Web上的链接

时间:2016-06-06 13:46:56

标签: vbscript qtp hp-uft

我正在尝试在UFT中编写脚本,我需要点击链接(始终是表中的第一个链接),其标题会动态更改。我尝试以下方法:

Dim obj_ChkDesc

Set obj_ChkDesc=Description.Create
obj_ChkDesc(“Class Name”).value = “Link”
Obj_ChkDesc("name").value="Log in"

Browser().page().link(obj_ChkDesc).click

当值更改失败时,它不起作用。 有人可以告诉我,点击标题动态变化的第一个链接需要做些什么?

提前致谢。

2 个答案:

答案 0 :(得分:4)

有两种方法可以做到。

首先,使用Regular Expression。但它假设link名称应遵循一些规则,比如动态10位数,然后您可以使用[0-9]{10}作为正则表达式模式。为此,您需要使用Spy来捕获此链接,然后将其属性outerhtml更改为正则表达式...

另一种方式(我推荐这个):既然你提到它是WebTable。有一种名为ChildItem的方法。假设您要点击的链接始终位于Row 1, Col 1。然后你可以这样写:

'Set Table object
Set TableObj = Browser(...).Page(...).WebTable(...)
'Locate Link
Set LinkObj = TableObj.ChildItem(1,1,"Link",0)
LinkObj.Click

请注意,此处的参数1,1,"Link",0表示Row,Col,ClassName,IndexIndex可能会引起混淆。说Row 1 Col 1有两个链接,您想要点击第二个链接,然后Index应为1

答案 1 :(得分:1)

First of all, based on your statement: Parallel.ForEach(yourListOfStuff, new ParallelOptions { MaxDegreeOfParallelism = 10 }, stuff => { YourMethod(stuff); } ); where i need to click on a link, you don't need to use (Always the first link in the table) because in general Obj_ChkDesc("name").value property will be different for each links. And by using it you are specifically looking for that link.
You can simply use:

name

Another thing, you should also include WebTable in your statement above, otherwise you'll end up covering all the links from the page and NOT just from particular table.