Vbscript UFT-随机日期

Vbscript UFT-随机日期,vbscript,hp-uft,Vbscript,Hp Uft,我创建了这段代码,并在一定范围内获得了一个随机日期。我在一些网站上支持它,在stack上回答其他网站的问题。这是可行的,没有问题,但当我尝试在一个函数中传递时,会不断给出错误 StartDate = "01-01-1950" EndDate= "31-12-2000" StartDate = CDate(StartDate) EndDate= CDate(EndDate) Randomize dtmRandomDate = DateValue((EndDate- StartDate + 1)

我创建了这段代码,并在一定范围内获得了一个随机日期。我在一些网站上支持它,在stack上回答其他网站的问题。这是可行的,没有问题,但当我尝试在一个函数中传递时,会不断给出错误

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 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()
    将值转换为correct
    Date
    时,应将值作为字符串传递。这只需要在测试中将每个参数封装在双引号中

    a = DataRandom("01-02-2020", "03-04-2022")
    


  • 同样如前所述,
    Randomize
    语句应该只运行一次,而不是每次调用函数时都运行一次。理想情况下,您应该有一个处理脚本设置和初始化的
    Init()
    过程。

    因此,获得Lankymart帮助,这是库中的最后一个函数。 更改变量,或根据需要声明

    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
    

    您需要从函数返回结果,即
    DataRandom=dtmRandomDate
    。目前,您的
    DataRandom()
    函数无法返回值。您好@Lankymart,首先让我感谢您的回答。帮个大忙。当你是一名编程学徒时就会发生这种情况,是的,我忘了返回结果。关于我没有放弃的双质量,只是在这里传错了。如果将来有人需要的话,我会把所有的功能都留在图书馆集成。再次感谢。问候。没问题@Rik,很高兴它有帮助。请删除函数中的随机调用。(每个会话/运行应只调用一次Randomize,因为它会初始化生成器)请从函数中删除对Randomize的调用。(每个会话/运行只需调用一次Randomize,因为它会初始化生成器)Done@Ekkehard.Horner。但这意味着,如果我在会话/运行时没有在其他任何地方调用Randomize,我将不得不使用函数调用它,对吗?对于简单脚本,在开始时调用Randomize;对于更复杂的情况,请使用标志确保只调用一次。