如何在robot框架中向声明的变量添加变量
我的脚本中有很多表变量。下面是一个例子
*** Variable ***
${Amount1_Column} xpath=//div[@id='*GFtable***0***EventDealDataValidationMask***report***unfixedData']/table/tbody/tr[1]/td[4]/div/table/tbody/tr[3]/td
${Amount2_Column} xpath=//div[@id='*GFtable***0***EventDealDataValidationMask***report***unfixedData']/table/tbody/tr[1]/td[6]/div/table/tbody/tr[3]/td
${CounterParty_Column} xpath=//div[@id='*GFtable***0***EventDealDataValidationMask***report***unfixedData']/table/tbody/tr[1]/td[90]/div/table/tbody/tr[3}]/td
${CurrencyPair_Column} xpath=//div[@id='*GFtable***0***EventDealDataValidationMask***report***unfixedData']/table/tbody/tr[1]/td[76]/div/table/tbody/tr[3}]/td
${SpotRate_Column} xpath=//div[@id='*GFtable***0***EventDealDataValidationMask***report***unfixedData']/table/tbody/tr[1]/td[13]/div/table/tbody/tr[3]/td
然后在我的测试用例中,我使用get element count
来计算我的表行,并将其用于我的变量,如下面的示例所示
${Count} get element count xpath=//div[@id='*GFtable***0***EventDealDataValidationMask***report***unfixedData']/table
set suite variable ${New_Count} ${Count}
现在,我将${New_Count}
变量用于声明的变量,如下面的示例所示
*** Variable ***
${Amount1_Column} xpath=//div[@id='*GFtable***0***EventDealDataValidationMask***report***unfixedData']/table/tbody/tr[1]/td[4]/div/table/tbody/tr[${New_Count}]/td
${Amount2_Column} xpath=//div[@id='*GFtable***0***EventDealDataValidationMask***report***unfixedData']/table/tbody/tr[1]/td[6]/div/table/tbody/tr[${New_Count}]/td
运行脚本时,无法识别我的变量
免责声明:我不会真的推荐你的方法,最后建议了一些替代方法
由于执行顺序,无法识别该变量;框架首先检查并定义所有变量,然后执行suite setup关键字,然后执行case setup关键字,然后执行case中的变量。
您可能看到了它的发展方向——您正在变量部分使用一个var,但此时还没有运行任何关键字,并且
Set Suite Variable
还没有执行;e、 g.您正在使用未定义的变量有人可能会说,“好的,我将为
${New_Count}
定义一个占位符,这样它就被定义了;然后在我的例子中,它将被重新定义,定位器就很好了”。是,不是,;定位器将被定义一次-当它在变量部分被计算时,并且将使用占位符值。您可以稍后更改${New_Count}
,但它不会以任何方式更改以前使用它的位置(例如,它没有用作指针;字符串变量值是“静态的”)那么我们能做些什么呢
${New_Count}
的值时,您还需要重新计算使用它的定位器;并调用Set Suite Variable
李>Reload Library
关键字,迫使框架使用新值${New_Count}
重新评估它们的值;但我不知道它是否支持。机器人文件,我个人还没有尝试过李>BuiltIn().get_variable_value('${New_Count}')
并返回动态计算的值李>相关问题 更多 >
编程相关推荐