selenium - 浏览器自动化框架和生态系统。

Created at: 2013-01-15 05:40:56
开发语言: Java
授权协议: Apache-2.0

selenium

CI - 红宝石 CI - 蟒蛇 CI - JavaScript CI - 爪哇

 selenium

Selenium是一个伞形项目,封装了各种工具和库,可实现Web浏览器自动化。Selenium专门为W3C WebDriver规范提供了一个基础设施 - 一个与所有主要Web浏览器兼容的平台和语言中立的编码接口。

该项目是由志愿者贡献者实现的,他们慷慨地捐赠了数千小时的代码开发和维护。

selenium 的源代码是在Apache 2.0许可证下提供的。

文档

叙述性文档:

接口文档:

拉取请求

请在提交拉取请求之前阅读 CONTRIBUTING.md

要求

  • Bazelisk,一个巴泽尔包装器,它会自动下载文件中指定的巴泽尔版本,并透明地将所有命令行参数传递到真正的巴泽尔二进制文件。
    .bazelversion
  • 最新版本的爪哇 11 开放JDK
  • java
    和(确保使用 JDK 中的可执行文件,而不是 JRE)。
    jar
    $PATH
    java
    • 要对此进行测试,请尝试运行命令 。如果只安装了 JRE,则此命令将不存在。如果遇到命令行选项列表,则表示你正确引用了 JDK。
      javac
  • 蟒蛇 3.7+
    python
    PATH
  • 红宝石 3+
    ruby
    PATH
  • 用于蟒蛇的毒素自动化项目
    pip install tox
  • 苹果操作系统用户:
    • 安装最新版本的 Xcode,包括命令行工具。此命令应该有效
      xcode-select --install
    • 苹果硅Mac应该添加到他们的文件中。我们正在努力确保从长远来看不需要这样做。
      build --host_platform=//:rosetta
      .bazelrc.local
  • 视窗用户:
    • 安装了命令行工具和生成工具的最新版本的可视化工作室
    • BAZEL_VS
      环境变量应指向构建工具的位置,例如
      C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools
    • BAZEL_VC
      环境变量应指向命令行工具的位置,例如
      C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC
    • BAZEL_VC_FULL_VERSION
      环境变量应包含已安装的命令行工具的版本,例如
      14.27.29110
    • 详细的设置指南可以在吉姆·埃文的帖子上看到
    • 如果遵循了 Jim 的博客说明,还要确保在 .
      C:\tools\msys65\usr\bin
      PATH

互联网浏览器驱动程序

如果计划编译 IE 驱动程序,则还需要:

该版本可在任何平台上使用,但如果你不是在 Windows 上进行构建,则将以静默方式跳过 IE 的测试。

建筑

使用 GitPod 贡献

GitPod 提供了一个随时可用的开发环境。

在吉特泊德中打开

要配置和使用本地计算机,请继续阅读。

巴泽尔

巴泽尔是由谷歌的优秀人士建造的。Bazel管理依赖关系下载,生成Selenium二进制文件,执行测试,并相当快速地完成所有操作。

下面提供了有关运行Bazel的更详细说明,但是如果你可以成功地构建java和javascript文件夹而不会出错,那么你应该确信系统上有正确的二进制文件。

构建前

确保你已安装 Firefox,并在 .你可能需要不时更新它。

$PATH

常见构建目标

爪哇岛

单击以查看 Java 构建步骤

要从源代码构建最常用的Selenium模块,请从根项目文件夹执行以下命令:

bazel build java/...

如果你想测试,你可以运行,那么你可以通过运行以下命令来做到这一点

bazel test //java/... --test_size_filters=small,medium,large --test_tag_filters=<browser>

这个论点需要小,中,大。小类似于单元测试,中类似于集成测试,大类似于端到端测试。

test_size_filters

允许我们传入浏览器名称和一些可以在代码库中找到的不同标签。

test_tag_filters

要构建网格部署 jar,请运行以下命令:

bazel build grid

日志将显示输出 jar 所在的位置。

脚本

点击查看脚本构建步骤

如果你想构建所有的 JavaScript 代码,你可以运行:

bazel build javascript/...

要构建 NodeJS 绑定,你需要运行:

bazel build //javascript/node/selenium-webdriver

运行测试运行:

bazel test //javascript/node/selenium-webdriver:tests

你可以使用浏览器的名称传入环境变量。

SELENIUM_BROWSER

要发布到 NPM 运行:

bazel run //javascript/node/selenium-webdriver:selenium-webdriver.publish

点击查看Python构建步骤

如果要生成 python 绑定,请运行:

bazel build //py:selenium

运行测试运行:

bazel test //py:test-<browsername>

如果添加它,它将下载浏览器和驱动程序供你使用。

--//common:pin_browsers

要本地安装运行:

bazel build //py:selenium-wheel
pip install bazel-bin/py/selenium-*.whl

发布运行:

bazel build //py:selenium-wheel
twine upload bazel-bin/py/selenium-*.whl

红宝石

点击查看 Ruby 构建步骤

要生成 Ruby 代码,请运行:

bazel build //rb/...

.网络

单击以查看 .NET 生成步骤

要生成 .NET 代码,请运行:

bazel build //dotnet/...

bazel build //dotnet/test/common:chrome

构建详细信息

巴泽尔文件称为 BUILD.bazel,模块的构建顺序由构建系统决定。如果要生成单个模块(假设以前已生成所有依赖模块),请尝试以下操作:

bazel test javascript/atoms:test

在这种情况下,是模块目录,是该目录文件中的目标。

javascript/atoms
test
BUILD.bazel

当你在日志中看到构建目标滚动过去时,你可能希望单独运行它们。

构建输出

bazel
创建一个顶级目录组,每个目录上都有前缀。
bazel-

常见任务(巴泽尔)

要从源代码构建大量 Selenium 二进制文件,请从根文件夹运行以下命令:

bazel build java/... javascript/...

若要在项目的特定区域中运行测试,请使用“test”命令,后跟文件夹或目标。测试被标记为“小”,“中”或“大”,可以使用以下选项进行过滤:

--test_size_filters

bazel test --test_size_filters=small,medium java/...

Bazel 的“test”命令将运行包中的所有测试,包括集成测试。预计 会启动浏览器并消耗大量时间和资源。

test java/...

要将固定浏览器的版本提升到其最新的稳定版本,请执行以下操作:

bazel run scripts:pinned_browsers > temp.bzl && mv temp.bzl common/repositories.bzl

编辑代码

该团队的大多数成员都使用智能IDEA或VS。用于日常编辑的代码。如果你使用的是IntelliJ,那么我们强烈建议你安装Bazel IJ插件,该插件记录在其自己的网站上

如果你确实使用 IntelliJ 和 Bazel 插件,则在脚本/ij.bazelproject 的树中签入了一个项目视图,这将使启动更容易,并且编辑代码:)

旅游

代码库通常围绕用于编写组件的语言进行分段。 selenium 广泛使用 JavaScript,所以让我们从这里开始。首先,启动开发服务器:

bazel run debug-server

现在,导航到 http://localhost:2310/javascript。你将找到所显示目录的内容。我们使用闭包库来开发大部分 JavaScript,所以现在导航到 http://localhost:2310/javascript/atoms/test

javascript/

此目录中的测试是名称以 结尾的普通 HTML 文件。单击一个以加载页面并运行测试。

_test.html

帮助
go

更一般,但基本的帮助...

go

./go --help

go
围绕 Rake 的包装器,因此你可以使用标准命令(如)获取有关可用目标的详细信息。
rake -T

马文本身

selenium 不是用梅文建造的。它是用 构建的,尽管如上所述调用了它,因此你不必对此了解太多。

bazel
go

也就是说,可以相对快速地构建 selenium 片供Maven使用。只有当你正在针对你的应用程序测试Selenium开发的尖端技术(我们欢迎它)时,你才会真正想要这样做。这是构建和部署到本地专家存储库()的最快方法,同时跳过Selenium自己的测试。

~/.m2/repository

./go maven-install

专家罐现在应该在你当地的.

~/.m2/repository

更新 Java 依赖项

Java 依赖项的坐标(组 Id工件 Id版本)在文件 maven_deps.bzl 中定义。修改这些依赖项的过程如下:

  1. (可选)如果要检测未更新的依赖项,可以使用以下命令进行自动发现:
bazel run @maven//:outdated
  1. 修改maven_deps.例如,我们可以在前面的步骤中碰到给定工件的版本。

  2. 列宾依赖关系。需要此过程来更新文件 maven_install.json,该文件用于管理 Maven 依赖项树(有关更多详细信息,请参阅rules_jvm_external)。执行此步骤的命令如下:

REPIN=1 bazel run @unpinned_maven//:pin
  1. (可选)如果我们将 IntelliJ 与巴泽尔插件一起使用,我们需要同步我们的项目。为此,我们单击Bazel同步将项目与BUILD文件同步

在 Linux 上运行浏览器测试

为了运行浏览器测试,你首先需要安装特定于浏览器的驱动程序,例如壁虎驱动程序铬驱动程序边缘驱动程序。这些需要在你的.

PATH

默认情况下,Bazel 会在当前 X 服务器 UI 中运行这些测试。如果你愿意,也可以在虚拟或嵌套的 X 服务器中运行它们。

  1. 运行 X 服务器或
    Xvfb :99
    Xnest :99
  2. 运行窗口管理器,例如,
    DISPLAY=:99 jwm
  3. 运行你感兴趣的测试:
bazel test --test_env=DISPLAY=:99 //java/... --test_tag_filters=chrome

在虚拟 X 服务器中运行测试的一种简单方法是使用 Bazel 的功能:

--run_under

bazel test --run_under="xvfb-run -a" //java/... --test_tag_filters=chrome

巴泽尔安装/故障排除

selenium 构建 Docker 映像

如果你发现很难使用 bazel 设置开发环境,并且你有权访问 Docker,那么你可以从开发映像目录中的 Docker 文件中构建适合构建和测试 Selenium 的 Docker 映像

苹果操作系统

巴泽利斯克

巴泽利斯克是巴泽尔的Mac友好型发射器。若要安装,请按照下列步骤操作:

brew tap bazelbuild/tap && \
brew uninstall bazel; \
brew install bazelbuild/tap/bazelisk

断续器

如果你收到提及 Xcode 的错误,则需要安装命令行工具。

适用于 Mac 的 Bazel 需要一些额外的步骤才能正确配置。首先:使用巴泽尔斯克项目(由菲尔沃提供),这是巴泽尔的纯戈兰实现。要安装 Bazelisk,请首先验证你的 Xcode 是否将进行协作:执行以下命令:

xcode-select -p

如果值为 ,则可以继续安装巴泽利什克。但是,如果返回值为 ,则需要将 Xcode 系统重定向到正确的值。

/Applications/Xcode.app/Contents/Developer/
/Library/Developer/CommandLineTools/

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer/
sudo xcodebuild -license

第一个命令将提示你输入密码。第二步要求你阅读新的Xcode许可证,然后通过键入“同意”来接受它。

(感谢此线程执行这些步骤)