Robot Framework Selenium Appium如何拼接動態XPath
1.問題背景
在使用Robot Framework的Selenium或者Appium Library時,大家經常會遇到一個問題,就是如何定位一個給定text的控件,例如給定一個人名,我需要去定位這個人在界面上的控件,怎麼辦?
例如"XPath = //android.view.View[@text=‘劉xx’]",這裏的人名是動態參數,需要外部傳參進來,因此整個XPath也是動態的。這個問題在編程語言比如Java或者Python中是非常好解決的,拼個字符串就可以了,但是在Robot Framework中咋拼這玩意呢?
2.解決方式
在Robot Framework中,思路也是拼接字符串,只不過我們需要使用 Builtin Library中默認提供的Catenate關鍵字,如下圖:
圖中即爲拼接的過程,我把這一過程直接封裝成了一個user_keyword,相當於一個方法。
這個方法需要一個傳入參數,即${人員姓名}參數,用於接收外部的入參。
一個返回參數,即把方法中拼接好的xpath作爲return值傳出。
拼接的過程使用了Builtin Library中默認提供的Catenate關鍵字,SEPERATORE=空,即代表拼接字符串時不需要分隔符。
因此,如果傳入的參數${人員姓名} = ‘劉xx’,那麼傳出的${xpath} = //android.view.View[@text='劉xx’]。
在test case中調用時,就可以按下圖中的方式進行調用:
3.用到的catenate關鍵字詳解
Catenate關鍵字專門用於Robot Framework中拼接字符串,其用法詳情如下圖: