Problem
經過了不知道多少年,Robot Framework已經發展到7.0,最近由於某些原因,又燃起了熊熊之火在工作上。所以我的計畫是讓我們的環境可以升到目前Java可執行的最後版本: 4.1.2。
在那之前,我預計先升到3.2.x,因為3.2.x已經不支持某些特定語法。
在3.1.2版本中修正deprecate items
在robot報表最上方,可以看到滿滿的警告,告訴你哪些語法即將在3.2過期。那些就是你要修正的目標。
這個項目算是最簡單的,就是直接把舊版本原本換行需要的跳脫字元砍掉就解決了:
另外一種案例是在Template的情況,要補EMPTY上去:
Invalid syntax in keyword 'Redetect Monitor Items': Ignoring lines with only continuation marker '...' is deprecated.
這個也是舊版本註解一行過長時,換行接續的過時寫法。把不必要的註解拔掉或全移到下一行即可。
3.2.x版本中發生錯誤的項目
Escaping special characters (Variable '@{"Subtype":"' was not closed properly.)
這個項目在我使用3.1.2的時候並沒被掃出來,而是升級到3.2.2的時候測試直接錯給我看:
我看了一下推測是保留字元跳脫的問題,所以參考下圖方法就解決了。
ImportError: No module named variables
這個是相當奇怪的問題,因為Linux上執行Robot正常但Windows有問題:
Variables variables.py
改成
Variables global_variables.py
Selenium2Library相關
修改過程中,有些項目不是RobotFramework本身的,我也一起收錄進來。
Using 'Get Element Attribute' without explicit attribute is deprecated.
這個就是要求你自己要傳明確的節點屬性進去..
在3.2.x版本中修正deprecate items
有些項目是等到我升級到3.2.2之後被掃出來的deprecate items,為了利於下次升級,所以先開始改。
Accessing variable items using '@{result1}[0]' syntax is deprecated. Use '${result1}[0]' instead.
如果測試量很多,我推測最大宗的deprecate item應該就屬於這個項目了。詳細原因請看: link。這個問題照著建議使用$去替代@就可以解決了。如果有使用&而不是用@去存取list的人,也會有相同問題。
Ignoring space after '\n' is deprecated. For more info see: https://github.com/robotframework/robotframework/issues/3333
這個問題主要是因為在'\n'之後有直接使用空白字元,後來我們使用${SPACE}去取代空白字元之後,這個問題就修正了。
後記
2024-09-29 可能是因為修正了3.2.x所有的deprecated item,所以升到4.1.2之後沒有什麼錯誤發生。
留言
張貼留言