我正在考虑做某事,我不确定是否可能-甚至不是最佳实践,但仍然想尝试一下。
我有一个函数库,并且有执行主要脚本的操作,显然是从该库中调用函数。
最初在我的操作中,代码如下所示:
代码
Browser("Browser").Page("Page").WebElement("Element").Click
但是,我将其更改为此:
代码
Set WebLink = Browser("Browser").Page("Page")
WebLink.WebElement("Element").Click
之所以这样做,是因为我觉得它的外观更简洁,每行代码都更少。
我知道我可以编写一个函数来做到这一点:
Public Function myLink(WebLink)
Set WebLink = Browser("Browser").Page("Page")
End Function
然后,在我的操作中,我只在顶部拨打一次电话:
代码
Call myLink(WebLink)
WebLink.WebElement("Name").HighLight
但是,我想在某些情况下,我会有不同的页面名称,例如:
代码
Browser("Browser").Page("Page1")
Browser("Browser").Page("Page2")
Browser("Browser").Page("Page3")
所以也许创建一个存储我的变量的函数,然后我可以调用变量是一种选择。
我的函数可能如下所示:
代码
Public Function myLinks(WebLink)
Dim Pages(): Pages = ("Login","CreateUser","SelectOption","DeleteUser",)
Browser("Browser").Page(Pages())
For Each Elem In Pages
Set WebLink = Browser("Browser").Page(Pages())
End For
End Function
然后在我的操作中,我会这样使用它:
代码
Call myLinks(WebLink)
Login.WebElement("Element").Click
CreateUser.WebElement("Element").Click
SelectOption.WebElement("Element").Click
DeleteUser.WebElement("Element").Click
我知道我所拥有的可能不合逻辑,但是如果像这样的事情也许行得通,我想尝试一下。
答案 0 :(得分:2)
好吧,如果您没有在vbs文件的开头启用Option Explicit(这将迫使您在使用前声明每个变量),那么您可以简单地说:
For Each strPage in Pages()
ExecuteGlobal "Set " & strPage & " = Browser(""Browser"").Page(""" & strPage & """)"
Next
这将为您创建全局变量,其名称为Pages数组中的字符串。您不需要任何输入参数
P.S:一个更好的名称是 InitPageObjects -因为您要实现的目标与链接无关