我正在尝试在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
当值更改失败时,它不起作用。 有人可以告诉我,点击标题动态变化的第一个链接需要做些什么?
提前致谢。
答案 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,Index
。 Index
可能会引起混淆。说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.