为 Selenium 网站和文档做贡献

关于改进 Selenium 的文档和代码示例的信息

Selenium 是一个大型软件项目,其网站和文档是了解其工作原理以及学习有效利用其潜力的关键。

此项目包含 Selenium 的网站和文档。这是一项持续的努力(不针对任何特定版本),旨在提供有关如何有效使用 Selenium、如何参与以及如何为 Selenium 做出贡献的最新信息。

对网站和文档的贡献遵循下面关于贡献部分中描述的过程。


Selenium 项目欢迎所有人的贡献。您可以通过多种方式提供帮助

报告问题

在报告新问题或评论现有问题时,请确保讨论与 Selenium 软件、其网站和/或文档的具体技术问题相关。

所有 Selenium 组件都会随着时间的推移而快速变化,因此这可能会导致文档过时。如果您发现这种情况,如上所述,请随时为此创建一个问题。您也可能知道如何更新文档,因此请向我们发送包含相关更改的拉取请求。

如果您不确定您发现的内容是否是问题,请通过 https://seleniumcn.cn/support 中描述的沟通渠道进行咨询。

可以提供哪些帮助

创建示例

需要移动的示例标记为

添加示例

我们希望能够在 CI 中运行所有代码示例,以确保人们可以复制粘贴并在网站上执行所有内容。因此,我们将代码放置在 examples 目录中的相应位置。文档中的每个页面都与每种语言的测试文件相关联,并且应遵循命名约定。例如,此页面 https://seleniumcn.cn/documentation/webdriver/browsers/chrome/ 的示例会添加到以下文件中

  • “/examples/java/src/test/java/dev/selenium/browsers/ChromeTest.java”
  • “/examples/python/tests/browsers/test_chrome.py”
  • “/examples/dotnet/SeleniumDocs/Browsers/ChromeTest.cs”
  • “/examples/ruby/spec/browsers/chrome_spec.rb”
  • “/examples/javascript/test/browser/chromeSpecificCaps.spec.js”

每个示例都应该有自己的测试。理想情况下,每个测试都有一个断言来验证代码是否按预期工作。一旦代码被复制到适当文件中的自己的测试中,就需要将其引用在 markdown 文件中。

例如,Ruby 中的选项卡如下所示

    {{< tab header="Ruby" >}}
    {{< gh-codeblock path="/examples/ruby/spec/browsers/chrome_spec.rb#L8-L9" >}}
    {{< /tab >}}

末尾的行号仅表示实际表示所显示项目的代码行或行。如果用户想要更多上下文,他们可以单击指向 GitHub 页面的链接,该链接将显示完整上下文。

确保如果您在页面中添加测试,markdown 文件中的所有其他行号仍然正确。在页面顶部添加测试意味着更新文档中具有该文件行号的每个引用。

最后,请确保测试在 CI 中通过。

移动示例

需要移动的示例标记为

移动代码

创建示例”部分中的所有内容都适用,但有一个补充。

确保选项卡包含 text=true。默认情况下,选项卡的格式设置为代码,因此要使用 markdown 或其他 shortcode 语句(如 gh-codeblock),需要将其声明为文本。对于大多数示例,tabpane 声明 text=true,但如果某些选项卡具有代码示例,则 tabpane 不能指定它,并且必须在不需要自动代码格式化的选项卡中指定它。

贡献机制

Selenium 项目欢迎新的贡献者。随着时间的推移做出重大和有价值贡献的个人将被任命为提交者,并获得对该项目的提交访问权限。

本指南将指导您完成贡献过程。

步骤 1:Fork

GitHub 上 Fork 该项目,并在本地检出您的副本。

% git clone git@github.com:seleniumhq/seleniumhq.github.io.git
% cd seleniumhq.github.io

依赖项:Hugo

我们使用 HugoDocsy 主题 来构建和渲染网站。您需要 Hugo 二进制文件的“扩展”Sass/SCSS 版本才能在此站点上工作。我们建议使用 Hugo 0.125.4 。

请按照 Docsy 中的 安装 Hugo 说明进行操作。

步骤 2:分支

创建一个功能分支并开始编写代码

% git checkout -b my-feature-branch

我们实践基于 HEAD 的开发,这意味着所有更改都直接应用于 dev 之上。

步骤 3:进行更改

存储库包含网站和文档。要对网站进行更改,请在 website_and_docs 目录中工作。要查看更改的实时预览,请在站点的根目录上运行 hugo server

% cd website_and_docs
% hugo server

该项目从 GitHub 加载代码,如果该代码已更新,并且没有反映在您的预览中,您可以运行 hugo 而不使用缓存:hugo server --ignoreCache

有关我们贡献约定的更多信息,请参阅 风格指南

步骤 4:提交

首先,确保 git 知道您的姓名和电子邮件地址

% git config --global user.name 'Santa Claus'
% git config --global user.email 'santa@example.com'

编写良好的提交消息非常重要。提交消息应描述发生了什么更改、原因以及引用的已修复问题(如果有)。编写时请遵循以下指南

  1. 第一行应在 50 个字符左右或更少,并且包含对更改的简短描述。
  2. 保持第二行为空。
  3. 将所有其他行包裹在 72 列。
  4. 包括 Fixes #N,其中 N 是提交修复的问题编号(如果有)。

一个好的提交消息可能如下所示

explain commit normatively in one line

Body of commit message is a few lines of text, explaining things
in more detail, possibly giving some background about the issue
being fixed, etc.

The body of the commit message can be several paragraphs, and
please do proper word-wrap and keep columns shorter than about
72 characters or so. That way `git log` will show things
nicely even when it is indented.

Fixes #141

第一行必须有意义,因为这是人们在运行 git shortloggit log --oneline 时看到的内容。

步骤 5:变基

使用 git rebase(而不是 git merge)不时同步您的工作。

% git fetch origin
% git rebase origin/trunk

步骤 6:测试

始终记得运行本地服务器,有了它,您可以确保您的更改没有破坏任何内容。

步骤 7:推送

% git push origin my-feature-branch

转到 https://github.com/yourusername/seleniumhq.github.io.git 并按Pull Request并填写表格。请注明您已签署 CLA(请参阅步骤 7)。

拉取请求通常会在几天内进行审核。如果有需要解决的评论,请在新提交(最好是 fixups)中应用您的更改,然后推送到同一分支。

步骤 8:集成

代码审查完成后,提交者将采用您的 PR 并将其集成到存储库的 trunk 分支中。因为我们希望在 trunk 分支上保持线性历史记录,所以我们通常会压缩并变基您的分支历史记录。

交流

有关如何与项目贡献者和整个社区进行沟通的所有详细信息,请访问 https://seleniumcn.cn/support