跳转到主要内容

由Playwright支持的Robot Framework浏览器库。旨在实现速度、可靠性和可见性。

项目描述

robotframework-browser

All Contributors

Version Actions Status License


Robot Framework 浏览器库支持,并由 Playwright 驱动。将浏览器自动化带入2023年!

目标::rocket: 速度、:white_check_mark: 可靠性和 :microscope: 可视性。

查看 关键字文档网页 获取更多详情。

安装说明

仅支持 Python 3.8 或更高版本。从 Node 端支持 18 和 20 LTS 版本。

  1. 安装 node.js,例如从 https://node.org.cn/en/download/
  2. 更新 pip pip install -U pip 确保使用最新版本
  3. 使用命令行安装 robotframework-browser:pip install robotframework-browser
  4. 安装 node 依赖:在您的 shell 中运行 rfbrowser init
  • 如果找不到 rfbrowser,请尝试 python -m Browser.entry init

请注意,默认情况下会安装 Chromium、Firefox 和 WebKit 浏览器,即使它们已经在系统中安装。安装大小取决于操作系统,但通常为 +700Mb。可以使用 rfbrowser init --skip-browsers 命令跳过浏览器二进制文件的安装,但此时用户负责安装浏览器二进制文件。可以通过将 chromiumfirefoxwebkit 作为参数添加到 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 库

  1. 使用命令行更新:pip install -U robotframework-browser
  2. 清理旧的 Node 端依赖和浏览器二进制文件:rfbrowser clean-node
  3. 为新安装的版本安装 Node 依赖:rfbrowser init

卸载说明

要完全卸载库,包括 Playwright 安装的浏览器二进制文件,请运行以下命令

  1. 清理旧的 Node 端依赖和浏览器二进制文件:rfbrowser clean-node
  2. 使用 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

人体工程学选择器语法,支持 textcssxpath 选择器的链式操作

# 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_PORTfrom Browser.utils import spawn_node_process辅助函数(查看辅助函数文档)来共享节点侧RF Browser进程。这可以根据您运行的测试拆分数量节省一些开销。之后清理进程。

重用认证凭证

开发

有关开发说明,请参阅CONTRIBUTING.md

核心团队

按出现顺序。

  • 米科·科佩拉
  • 塔图·阿洛
  • 亚内·哈尔科嫩(校友)
  • 克尔科·佩尔特塔里
  • 雷内·罗赫尔

贡献者

此项目是由社区驱动的,只有通过所有贡献者的工作才能成为现实。由Robocorp通过Robot Framework Foundation支持。

Mikko Korpela
米科·科佩拉

💻
Tatu Aalto
塔图·阿洛

💻
Antti Karjalainen
安蒂·卡贾拉伊宁

🔍
Ismo Aro
伊索·阿罗

🔍
Janne Härkönen
亚内·哈尔科嫩

💻
Kerkko Pelttari
克尔科·佩尔特塔里

💻
Robocorp
Robocorp

💵
René
雷内

💻
Bryan Oakley
布莱恩·奥克利

🤔
Tanakiat Srisaranyakul
塔纳基特·斯里萨拉纳库尔

🤔
Maaret Pyhäjärvi
玛亚特·皮哈耶尔维

📓
Karlo Smid
卡罗·斯米德

📓
Frank Schimmel
弗兰克·席姆尔

📓
Christoph
克里斯托夫

⚠️
Mika Hänninen
米卡·汉宁恩

💬
imbus
imbus

💵
Niklas
尼卡拉斯

📖
gdroes
gdroes

⚠️
Reaktor
Reaktor

💵
Adrian Yorke
阿德里安·约克

📖 👀
Nanakawa
纳纳科瓦

⚠️
Ed Manlove
埃德·曼洛夫

📖 🐛
Brian Tsao
布莱恩·曹

🐛 📓
charis
查里斯

💻 🐛
s-galante
s-galante

🐛
Simon Meggle
西蒙·梅格勒

📓 🐛 ⚠️ 🤔
Anna-Gunda
安娜-古达

🐛
anton264
anton264

📓
emakaay
emakaay

🐛
Nea Ohvo
尼娅·奥霍

🐛
Elout van Leeuwen
埃洛特·范·李文

📖 🤔 💻
LDerikx
LDerikx

📖
olga-
olga-

📖 🐛
Nicholas Bollweg
尼古拉斯·博尔韦格

📖
Ville Salonen
维尔·萨洛宁

🐛
Jani Mikkonen
贾尼·米科诺宁

🐛 📖
Aleh Borysiewicz
阿列赫·博里斯耶维奇

🐛
Jürgen Knauth
于尔根·诺特

🐛
dalaakso
达拉科索

🐛
msirkka
msirkka

🤔
Ossi R.
奥斯西·R.

💻
Adrian V.
阿德里安·V.

💻 🐛 🤔
Sami Sallmén
萨米·萨勒门

🐛 ⚠️
Pekka Klärck
佩卡·克拉克

💻 🐛
Jani Palsamäki
贾尼·帕尔萨马基

🐛
AllanMedeiros
艾伦·梅迪罗斯

🐛
Emmanuel Alap
埃马纽埃尔·阿拉普

🐛 💻
ankurbhalla-gmail
ankurbhalla-gmail

🤔
UliSei
UliSei

🤔 🐛 💻 📓
Tomasz Pawlak
托马什·帕沃尔克

🐛
mtoskamp
mtoskamp

🐛
zastress
zastress

🐛
Juga Paazmaya
朱加·帕兹迈亚

💻
Raphael Smadja
拉斐尔·斯马贾

🤔 💻 🐛
Antti Pakkanen
安蒂·帕坎宁

🐛
Luis A Gomez-Tinoco
路易斯·阿·戈梅斯-蒂诺科

🐛 💡 💻
ePlanLori
ePlanLori

🐛
laguna357
laguna357

🐛
Gavin Rodgers
加文·罗杰斯

🐛
pokaalinkanssayohon
pokaalinkanssayohon

🤔
Ryan Sandbach
雷恩·桑德巴赫

🐛 💻
Niko Kahilainen
尼科·卡希拉伊宁

🐛
Guillaume Gautier
纪尧姆·高蒂耶

📖
Robin Matz
罗宾·马茨

🤔
Stavros Ntentos
斯塔沃罗斯·恩特托斯

📖
Massukio
Massukio

🐛 🤔
Atihinen
Atihinen

🐛
gvrkumar
gvrkumar

🤔
Lauri Helkkula
劳里·赫尔库拉

🐛
rlall07
rlall07

🐛 🤔
Eldad Uzman
埃尔达·乌兹曼

🤔
mgarcibu
mgarcibu

🐛
DominikG
DominikG

🤔
jokinr
jokinr

⚠️ 🐛
Jier Chen
陈杰

💻
IDvoe
IDvoe

🐛
Cosmin Poieana
科斯明·波伊阿纳

🐛
Shenthil
森希尔

🐛
Marduk Bolaños
马尔杜克·博拉诺斯

🐛 🤔
amodzelewski
amodzelewski

🐛
TimDicos
蒂姆·迪科斯

🐛
vinismarques
vinismarques

🐛
nizwiz
nizwiz

🐛
Reddriver
Reddriver

🤔
Seppo
塞波

🐛
rousku
rousku

🐛
tomaspekarovic
tomaspekarovic

🤔
Robin Mackaij
罗宾·马卡伊

🐛
nixuewei
nixuewei

🤔
Slava
Slava

🤔 🐛 💻
Kari Harju
卡里·哈鲁

🐛
you

🐛
axiom41
axiom41

🐛
amankul
amankul

🐛
jcb-entrnce
jcb-entrnce

🐛
Remppa
Remppa

🐛
Tomasz Pawlak
托马什·帕沃尔克

🐛
Timo Stordell
蒂莫·斯托德尔

🐛
Marcin Gmurczyk
马尔钦·格穆尔奇克

💻
Daniel Biehl
丹尼尔·比厄尔

🐛 🤔
rarajabs
rarajabs

🐛
Sandeep Vaidya
桑迪普·瓦迪亚

🤔
falk
falk

📖
ciadoh
ciadoh

🐛
Johan van Iperen
约翰·范·伊珀伦

💻
Fabio Zadrozny
法比奥·扎多罗尼

🐛
BCGST
BCGST

📖
Wilfried van Asten
威尔弗里德·范·阿森

🐛 💻
Mikal H Henriksen
米卡尔·H·亨利森

🐛
alexinoDr
alexinoDr

🐛
trybuskrzysztof
trybuskrzysztof

🐛
Aino1980
Aino1980

🐛
BjornAhmark
BjornAhmark

🐛
Mezohren
Mezohren

🐛
Zoupers Zou
佐普尔斯·周

🤔
lasselindqvist
拉斯·林德奎斯特

🐛
David Nieto Sanz
大卫·尼托·桑兹

🐛
Gil Forcada Codinachs
吉尔·福卡达·科迪纳克斯

📖 🐛
Nathan Hannig
内森·汉尼格

🐛
Martin Kjellstrand
马丁·凯尔斯特兰德

🐛
Anton Medvedev
安东·梅德韦杰夫

💻
martamedovova-ext91522
martamedovova-ext91522

🐛 🤔
Dr. Dirk Richter
迪克·里希特博士

🤔
RatexMak
RatexMak

🤔
horzuff
horzuff

💻
naibra
naibra

🐛
Antti Pekka Vilkko
安蒂·佩卡·维尔科

🐛
Serafín Martín
塞拉菲因·马丁

🐛
JoostW21111
JoostW21111

🐛
Camatius
卡马蒂乌斯

🐛
terckert
terckert

🐛
Maksim Bondarew
马克西姆·邦达列夫

🐛
HenrikSchuette
亨利克·舒特

🐛
Gurunatharudh Bhandarkavathe(Infosys)
古鲁纳萨·鲁达拉卡瓦塔(infosys)

🐛
alpip1997
alpip1997

🐛
terolindfors
terolindfors

🐛
Thisara Wijesundera
提沙拉·维杰苏德拉

🤔
masudparvez
masudparvez

🤔
gitkatsi
gitkatsi

🐛 💻
Many Kasiriha
曼尼·卡斯里哈

🐛
Thulasi Raju
图拉西·拉朱

📖
Giancarlo Soverini
吉安卡洛·索维尼

🤔
lennartq
lennartq

💻
Lukas Boekenoogen
卢卡斯·博克诺根

📖
anacomparada
anacomparada

🐛 📖
siongwai
siangwai

🤔
nfaustin
nfaustin

🐛
Guido Schmitz
吉多·施密茨

💻
Chris Nesbitt-Smith
克里斯·内斯比特-史密斯

💻
vmmattila
vmmattila

🐛
Andre-A-AtGithub
Andre-A-AtGithub

🐛
Paweł
帕维尔

🐛
Raphael CAMUS
拉斐尔·卡穆斯

🐛
Markus
马克斯

🤔

项目详情


发布历史 发布通知 | RSS 源

下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

robotframework-browser-18.8.1.tar.gz (478.1 kB 查看哈希值)

上传时间

构建分布

robotframework_browser-18.8.1-py3-none-any.whl (489.2 kB 查看哈希值)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面