我创建这个代码做得到一个随机的日期在一个范围。我支持它从一些网站和答案在这里堆栈从别人。这工作白没有问题,但当我试图通过在一个函数一直给错误。
StartDate = "01-01-1950"
EndDate= "31-12-2000"
StartDate = CDate(StartDate)
EndDate= CDate(EndDate)
Randomize
dtmRandomDate = DateValue((EndDate- StartDate + 1) * Rnd + StartDate )
Browser("DashBoard_2").Page("DashBoard").WebEdit("txtBornDate").Set dtmRandomDate
该错误。
该函数。
Function DataRandom(StartDate, EndDate)
Dim StartDate, EndDate
StartDate = CDate(StartDate)
EndDate= CDate(EndDate)
Randomize
dtmRandomDate = EndDate((dtmEndDate - StartDate+ 1) * Rnd + StartDate)
End Function
我认为问题出在我传递变量的方式上。关于日期函数的一些东西,我没有声明,使变量接受日期?是UFT系统本身的问题吗?
已经尝试了一些事情,但没有工作。
谢谢你,最好的祝愿
从测试中可以看出,它是失败的130行。
a = DataRandom(01-02-2020, 03-04-2022)
这里有两个问题
这个函数 DateRandom()
期待返回一个值,但函数定义中没有包含返回结果的语句,因此表现得更像一个子过程而不是函数。要解决这个问题,请将Function的定义改为。
Function DataRandom(StartDate, EndDate)
Dim StartDate, EndDate
StartDate = CDate(StartDate)
EndDate = CDate(EndDate)
Randomize 'Should be initialised once rather than with each call to the function.
dtmRandomDate = DateValue((EndDate - StartDate + 1) * Rnd + EndDate)
DateRandom = dtmRandomDate 'This line returns the result.
End Function
传递给函数的参数在语法上有问题,因为你使用了 CDate()
将数值转换为正确的 Date
你应该把值作为字符串来传递,这只需要在测试中把每个参数用双引号封装起来。这只需要在测试中用双引号封装每个参数。
a = DataRandom("01-02-2020", "03-04-2022")
同时,也正如指出的 吐槽 的 Randomize
语句应该只运行一次,而不是每次调用函数时都运行。理想情况下,你会有一个 Init()
过程,处理脚本的设置和初始化。
所以得到了Lankymart的帮助,最后的函数要放在libray.Change变量,或者根据你的需要声明。
Public StartDate, EndDate
Function DateRandom(StartDate, EndDate)
Dim dtmRandomDate, dtmStartDate, dtmEndDate
dtmStartDate = CDate(StartDate)
dtmEndDate = CDate(EndDate)
dtmRandomDate = DateValue((dtmEndDate - dtmStartDate + 1) * Rnd + dtmStartDate)
DateRandom = dtmRandomDate 'Returning the result
End Function