Library
关于射频指南 |机器人框架 (robotframework.org)
使用RF需要使用Library,常用的第三方库如下:
在web浏览器中进行web应用程序测试可以使用的库是
- Selenium Library 在内部使用流行的 Selenium 工具的 Web 测试库
- Browser Library 由 Playwright 提供支持。以速度、可靠性和可见性为目标。
web service和restful API可以用的库是
- Requests Library 一个机器人框架库,旨在通过包装众所周知的 Python 请求库来提供 HTTP API 测试功能
Appium Library Android and iOS UI测试,内部使用appium.
Database Library 基于python的数据库测试
selenium Library
selenium Library是RF的一个web测试库,内部使用selenium。
pip install --upgrade robotframework-seleniumlibrary
selenium Library关键字可以从下链接中查询。
https://robotframework.org/SeleniumLibrary/SeleniumLibrary.html
新建一个test.robot文件,robot是RF测试用例文件的后缀。
首先在Settings导入SeleniumLibrary,然后在TestCase里写测试用例,如下例的Open Browser都是SeleniumLibrary提供的关键字,如下用例打开edge浏览器,输入框中输入关键字,并点击百度一下按钮,最后关闭浏览器。
*** Settings ***
Library SeleniumLibrary
*** Test Cases ***
Search keywords in baidu
Open Browser url=https://www.baidu.com browser=edge
Input Text //input[@id="kw"] 周杰伦
Click Element //input[@id="su"]
Sleep 5
Close Browser
从SeleniumLibrary库的文件结构可以看到,keywords包含如下相关的关键字。
关键字
如下为Click Element关键字的源码,可以看出,关键字本质是@keyword修饰的方法,
如果存在modifier或action_chain,则调用对应方法,如果不存在则直接调用selenium的元素点击方法。
@keyword
def click_element(
self,
locator: Union[WebElement, str],
modifier: Union[bool, str] = False,
action_chain: bool = False,
):
if is_truthy(modifier):
self._click_with_modifier(locator, [None, None], modifier)
elif action_chain:
self._click_with_action_chain(locator)
else:
self.info(f"Clicking element '{locator}'.")
self.find_element(locator).click()
导入Library失败
原因是python环境变量错了,电脑上有3.7的和3.8的,我用的3.8的,但是没有把3.8设置为环境变了
输入关键字,会有提示如图Input password,会提示让输入定位和密码。
Browser Library
这个库是由playwright支持的
Browser Library | ROBOT FRAMEWORK
pip install robotframework-browser
rfbrowser init
Installing playwright...
Installing playwright-chromium...
Installing playwright-firefox...
Installing playwright-webkit...
Done!
Requests Library
这个库可以进行API测试,基于Python的Requests
pip install robotframework-requests
*** Settings ***
Library RequestsLibrary
*** Test Cases ***
Quick Get Request Test
${response}= GET https://www.google.com
Quick Get Request With Parameters Test
${response}= GET https://www.google.com/search params=query=ciao expected_status=200
Quick Get A JSON Body Test
${response}= GET https://jsonplaceholder.typicode.com/posts/1
Should Be Equal As Strings 1 ${response.json()}[id]