1. 程式人生 > >robotframework基礎入門:(3):找不到關鍵字的對應方法

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的版本即可。