RFS的web自动化验收测试——第12讲 List Variables-List变量及其用法
引言:什么是RFS——RobotFramework+Selenium2library,本系列主要介紹web自動化驗收測試方面。
(?@齊濤-道長?新浪微博)
?
這一講我們重點來介紹List Variables-List變量及其用法。
一、List變量及其用法
?在我們前面幾篇文章里用到了很多List變量,相信以后各位也會碰到需要使用的地方。
1、List變量賦值
和Scalar類似的賦值,除了用Set Variable還可以用Create List。
?
運行一下:
?
?
2、List變量使用
在使用上要注意看關鍵字的參數(shù)到底是Scalar的還是List,區(qū)別就是看變量名前面是否有 * (星號),如圖:
這個關鍵字的name就是支持傳入Scalar型的參數(shù),*args就是支持可以傳入List型值的。
所謂List型值其實是說支持多個值,即不確定個數(shù)的,List-like一樣的值,如下圖的2、3行:
?
?
當然,并不是說沒有星號的就不能用List的,只要是多個變量就可以用List傳值。
像Log這個關鍵字,他有2個Scalar型的傳入?yún)?shù),如果我想傳List也是可以的,但是必須是一個有2個元素的List,因為Log的第二個參數(shù)有默認值,所以如果你傳入1個元素的List也是可以的,但是如果傳入3個元素的List,那么就會報錯了。
你可以寫成上面這樣,但是我并不推薦這種做法,這里只是為了講解List的作用而做的示范。
?
綜上,對于有多個參數(shù)的關鍵字,你可以按照需要傳入多個Scalar變量,也可以傳入List變量,根據(jù)你自己的需要選擇合適的方式。
?
二、變量轉(zhuǎn)換
之前提過了Scalar變量用 $ 作為標識符,List型變量用 @ 作為標識符,而且他們是可以進行轉(zhuǎn)換的,理論上可以互相進行轉(zhuǎn)換,但是也有一點限制。
1、List變量轉(zhuǎn)換成Scalar
這種轉(zhuǎn)換的效果是把整個List變成一個Scalar,我覺得作用主要是對于那些只接收Scalar變量參數(shù)的關鍵字, 而你又想傳List的全部值的時候,或者其他你需要的把List當作Scalar的情況下使用。例如Fail關鍵字,他的msg這個參數(shù)只能接收 Scalar變量。
?
如果你想用Fail,把f這個變量的值都打出來,下面這樣寫是肯定會報錯的。
報錯信息為 Keyword 'BuiltIn.Fail' expected 0 to 1 arguments, got 3.
那么我們轉(zhuǎn)換一下,這樣寫就不報錯了。
運行結果:
?
2、Scalar變量轉(zhuǎn)換成List
其實以前介紹用戶關鍵字的時候也演示過,對于返回值是List的關鍵字,如果你給要賦值的變量寫的是Scalar的,他會自動把他變成List的。
還是上面這個例子,我們把@{f}改成${f}
這樣也是OK的。
?
3、轉(zhuǎn)換的限制
但是,我前面提到了,轉(zhuǎn)換是有一點限制的。
首先,上一講提到了,變量要進行賦值(類似于初始化)之后才能使用,如果沒有進行過賦值的RIDE里會有顏色提示,用一個前面的圖
圖中的紫色${f}就是提示你他沒有進行過賦值,此時而系統(tǒng)會默認他就是@{f}的Scalar形式,這個可以看上面的執(zhí)行結果。
那么這個限制就在Scalar轉(zhuǎn)換成List的地方,系統(tǒng)會默認${f}是@{f}的Scalar形式,但是他并不會默認@{f}是${f}的list形式,即使${f}已經(jīng)是list了。
看一下例子:
?
?這樣寫的話運行就會報錯:Non-existing variable '@{f}'.
那這時候${f}有什么用呢?除了前面介紹的作為Scalar型變量,值是所有元素,還可以根據(jù)index直接獲得某個元素。
例如:
運行結果:
?
看完上面的限制之后,還要補充一點,系統(tǒng)會默認${f}是@{f}的Scalar形式,這個也是有限制,必須是${f}沒有被賦值過的情況,如果${f}被賦值過是什么情況呢?
看看例子:
你覺得${f}會是什么值呢?
?
所以,這里要注意,盡量不要讓Scalar和List的變量重名,特別是你要用作不同的用途的時候。
一個重要的影響就是會導致下面的List元素獲取出現(xiàn)越界的情況。
?
三、List元素的獲取
List元素的獲取只有一種方式,無論是一維List還是二維List,都是用${變量名[index]},就是用$的變量,在變量名后面加上方括號,里面是序號。
1、一維List的例子。
運行:
?
2、二維List的例子。
運行結果:
如果log后面只寫${f[1]},那么得到的結果如圖:
?
總之,就是用方括號來表明你需要的元素,如果是多維List,要想清楚你到底要哪層的,不要寫少了或者寫多了。
轉(zhuǎn)載于:https://www.cnblogs.com/zhuifengji/p/4602578.html
總結
以上是生活随笔為你收集整理的RFS的web自动化验收测试——第12讲 List Variables-List变量及其用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDU 4883 Best Coder
- 下一篇: 当你学不进去的时候,试试“普瑞马法则”