robotframework基礎入門:(3):找不到關鍵字的對應方法
這篇文章記錄一下robotframe執行中出現No keyword with name的對應方法
現象
錯誤提示資訊:No keyword with name ‘Title Should Be’ found.
sh-4.2# robot test.robot
==============================================================================
Test
==============================================================================
Check something :: Check the page title | FAIL |
No keyword with name 'Title Should Be' found.
------------------------------------------------------------------------------
Test | FAIL |
1 critical test, 0 passed, 1 failed
1 test total, 0 passed, 1 failed
==============================================================================
Output: /tmp/output.xml
Log: /tmp/log.html
Report: /tmp/report.html
sh-4.2#
原因&確認方式
程式碼不用再貼了,因為這篇文章主要用來說明出現類似低階問題的確認內容和方法。
可能原因1:沒有匯入對應的庫
robot的測試指令碼中如果缺少關鍵字對應的庫,自然會出錯,唯一的一個例外就是BuildIn內建庫可以不用寫。因為此關鍵字在Selenium2Library中,所以需要檢查指令碼的Settings中是否有如下的內容
Library Selenium2Library
可能原因2:寫錯關鍵字名稱
這看起來雖然很像一個笑話,但是請仔細檢查一下,如果你卻是將Library匯入了,但是又認不出來,看看是不是多個空格什麼的,仔細,仔細,仔細。
上面兩種原因有可能有各種方式的變形,導致以為沒有問題實際卻有問題,那麼長的英文關鍵字寫錯一點根本不好認,漢字的優勢在這裡顯現的淋漓盡致,可以考慮使用漢字來寫關鍵字可能會更加簡練和有效率。
可能原因3:其他原因
從這個原因開始進入宿命論的角度,但是往往會存在,可能安裝了多個版本,之間相互衝突,或者環境的問題,依賴的問題,網路的問題等。
確認方式
以下以Title Should Be關鍵字找不到為例,介紹一下如何進行問題定位。
首先確認Title Should Be關鍵字在那個庫中,會寫robot的測試指令碼,自然知道這是robot使用selenium庫中所提供的關鍵字,用於確認開啟的頁面的title與輸入的引數是否一致的關鍵字,相關的庫名為Selenium2Library
確認pip的package
robot本身是使用python開發的,robotframework本身就是使用pip進行安裝的,其他相關的package也是一樣。
因為Selenium2Library是以robotframework-selenium2library為載體的,首先看看此package是否進行了安裝。
~ # pip show robotframework-selenium2library
Name: robotframework-selenium2library
Version: 3.0.0
Summary: Web testing library for Robot Framework
Home-page: https://github.com/robotframework/Selenium2Library
Author: Tatu Aalto
Author-email: aalto.tatu@gmail.com
License: Apache License 2.0
Location: /usr/lib/python2.7/site-packages
Requires: robotframework-seleniumlibrary
Required-by:
~ #
確認安裝的庫
python的庫使用pip安裝後,如果當前系統是python2.7的話,會被安裝在如下目錄:
/usr/lib/python2.7/site-packages/xxxx,比如
/usr/lib/python2.7/site-packages # ls
README robotframework-3.0.4-py2.7.egg-info
Selenium2Library robotframework_selenium2library-3.0.0.dist-info
SeleniumLibrary robotframework_seleniumlibrary-3.1.1.dist-info
easy_install.py selenium
easy_install.pyc selenium-3.14.0.dist-info
pip setuptools
pip-18.0.dist-info setuptools-33.1.1.post20171031-py2.7.egg-info
pkg_resources urllib3
robot urllib3-1.23.dist-info
/usr/lib/python2.7/site-packages #
確認此目錄:
- 是否存在
- 名字是否與robot指令碼中的引用名一致
經過確認Selenium2Library確實存在,並且Selenium2Library的寫法也與robot指令碼一致。
確認是否能夠進行import
在robot執行的OS上使用python確認是否能夠正常import相關的庫,比如此例中應該能夠想如下這樣正常import而不出error
~ # python
Python 2.7.15 (default, Aug 22 2018, 13:24:18)
[GCC 6.4.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import Selenium2Library
>>>
這樣基本上就能說明環境本身沒有問題,剩下的就多多檢查一下robot的指令碼或者robot的版本即可。