由Playwright支持的Robot Framework浏览器库。旨在实现速度、可靠性和可见性。
项目描述
robotframework-browser
由 Robot Framework 浏览器库支持,并由 Playwright 驱动。将浏览器自动化带入2023年!
目标::rocket: 速度、:white_check_mark: 可靠性和 :microscope: 可视性。
安装说明
仅支持 Python 3.8 或更高版本。从 Node 端支持 18 和 20 LTS 版本。
- 安装 node.js,例如从 https://node.org.cn/en/download/
- 更新 pip
pip install -U pip
确保使用最新版本 - 使用命令行安装 robotframework-browser:
pip install robotframework-browser
- 安装 node 依赖:在您的 shell 中运行
rfbrowser init
- 如果找不到
rfbrowser
,请尝试python -m Browser.entry init
请注意,默认情况下会安装 Chromium、Firefox 和 WebKit 浏览器,即使它们已经在系统中安装。安装大小取决于操作系统,但通常为 +700Mb。可以使用 rfbrowser init --skip-browsers
命令跳过浏览器二进制文件的安装,但此时用户负责安装浏览器二进制文件。可以通过将 chromium
、firefox
或 webkit
作为参数添加到 init 命令来仅安装所选的浏览器二进制文件。例如,rfbrowser init firefox
将仅安装 Firefox 二进制文件,而 rfbrowser init firefox chromium
将安装 Firefox 和 Chromium 二进制文件。
或者使用 Docker 镜像。在 docker/README.md 中有文档说明。
使用转换器安装
从版本 18.3.0 开始,浏览器库有可选依赖项 Robotidy。使用 Robotidy 安装库,运行安装:pip install robotframework-browser[tidy]
。从 18.3.0 版本开始,库将提供外部 Robotidy 转换器。浏览器库提供的转换器可以使用以下命令运行:rfbrowser transform --transformer-name /path/to/tests
。例如,rfbrowser transform --wait-until-network-is-idle /path/to/tests
将将弃用的 Wait Until Network Is Idle
关键字转换为 Wait For Load State
关键字。要查看浏览器库提供的转换器完整列表,请运行命令:rfbrowser transform --help
。
更新说明
要升级已安装的 robotframework-browser 库
- 使用命令行更新:
pip install -U robotframework-browser
- 清理旧的 Node 端依赖和浏览器二进制文件:
rfbrowser clean-node
- 为新安装的版本安装 Node 依赖:
rfbrowser init
卸载说明
要完全卸载库,包括 Playwright 安装的浏览器二进制文件,请运行以下命令
- 清理旧的 Node 端依赖和浏览器二进制文件:
rfbrowser clean-node
- 使用 pip 卸载:
pip uninstall robotframework-browser
示例
使用 Robot Framework 进行测试
*** Settings ***
Library Browser
*** Test Cases ***
Example Test
New Page https://playwright.net.cn
Get Text h1 contains Playwright
和与 Python 进行测试。
import Browser
browser = Browser.Browser()
browser.new_page("https://playwright.net.cn")
assert 'Playwright' in browser.get_text("h1")
browser.close_browser()
并使用 JavaScript 扩展
async function myGoToKeyword(url, page, logger) {
logger("Going to " + url)
return await page.goto(url);
}
myGoToKeyword.rfdoc = "This is my own go to keyword";
exports.__esModule = true;
exports.myGoToKeyword = myGoToKeyword;
*** Settings ***
Library Browser jsextension=${CURDIR}/mymodule.js
*** Test Cases ***
Example Test
New Page
myGoToKeyword https://www.robotframework.org
查看 示例。准备好扩展和分享您自己的地方在 robotframework-browser-extensions。
人体工程学选择器语法,支持 text
、css
和 xpath
选择器的链式操作
# Select element containing text "Login" with text selector strategy
# and select it's parent `input` element with xpath
Click "Login" >> xpath=../input
# Select element with CSS strategy and select button in it with text strategy
Click div.dialog >> "Ok"
在浏览器页面上评估
New Page ${LOGIN_URL}
${ref}= Get Element h1
Get Property ${ref} innerText == Login Page
Evaluate JavaScript ${ref} (elem) => elem.innerText = "abc"
Get Property ${ref} innerText == abc
异步等待 HTTP 请求和响应
# The button with id `delayed_request` fires a delayed request. We use a promise to capture it.
${promise}= Promise To Wait For Response matcher= timeout=3s
Click \#delayed_request
${body}= Wait For ${promise}
设备描述符
${device}= Get Device iPhone X
New Context &{device}
New Page
Get Viewport Size # returns { "width": 375, "height": 812 }
发送 HTTP 请求并解析其响应
${response}= HTTP /api/post POST {"name": "John"}
Should Be Equal ${response.status} ${200}
使用 Pabot 进行并行测试执行
您可以为每个pabot进程让RF Browser启动单独的进程。这很简单,只需使用pabot正常运行测试即可(参见https://github.com/mkorpela/pabot#basic-use)。但是,如果您有小型测试,不要使用--testlevelsplit
,因为它会导致大量开销,因为测试无论如何都不能共享浏览器。
您可以通过使用环境变量ROBOT_FRAMEWORK_BROWSER_NODE_PORT
和from Browser.utils import spawn_node_process
辅助函数(查看辅助函数文档)来共享节点侧RF Browser进程。这可以根据您运行的测试拆分数量节省一些开销。之后清理进程。
重用认证凭证
- 弄清楚页面如何存储认证
- 如果是localstorage或cookies,则应使用
Save Storage State
。请参见使用示例:https://marketsquare.github.io/robotframework-browser/Browser.html#Save%20Storage%20State
开发
有关开发说明,请参阅CONTRIBUTING.md。
核心团队
按出现顺序。
- 米科·科佩拉
- 塔图·阿洛
- 亚内·哈尔科嫩(校友)
- 克尔科·佩尔特塔里
- 雷内·罗赫尔
贡献者
此项目是由社区驱动的,只有通过所有贡献者的工作才能成为现实。由Robocorp通过Robot Framework Foundation支持。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
构建分布
哈希值 for robotframework_browser-18.8.1-py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fc12efafb2a782b2534e900a366ae3e7a22e4a68be5e7bc607e3f63e3e535e79 |
|
MD5 | ff9c18d6a3b2cc96ef1539b2396eb8bf |
|
BLAKE2b-256 | 586e1c0ea72cd6a667595836c4dcceb0b0878905e1ebb515d77c25dfd202f09e |