Skip to main content

用于 Selenium 的测试友好的 Python API,并与 Web 应用程序框架集成。

项目描述

文件状态 https://github.com/gocept/gocept.selenium/workflows/tests/badge.svg https://coveralls.io/repos/github/gocept/gocept.selenium/badge.svg PyPI 上的当前版本 支持的 Python 版本

gocept.selenium 为Selenium提供了一个 API ,适用于编写测试并将其与任何 WSGI、Plone 或 Grok 应用程序的测试套件集成。

虽然测试 API 可以独立使用,但集成是使用测试层完成的,这是zope.testrunner的一个特性。

使用gocept.pytestlayer将其与pytest集成。

开发 gocept.selenium

作者

gocept <邮件@gocept _ com >

在线文档

https://goceptselenium.readthedocs.org/

PyPI 页面

https://pypi.python.org/pypi/gocept.selenium/

问题跟踪器

https://github.com/gocept/gocept.selenium/issues

源代码

https://github.com/gocept/gocept.selenium

当前更改日志

https://raw.githubusercontent.com/gocept/gocept.selenium/master/CHANGES.rst

文档

为了构建 Sphinx 文档,运行以下命令:

$ python3 -m venv .
$ bin/pip install Sphinx
$ bin/sphinx-build doc doc/build

生成的 HTML 存储在doc/build中。

变更日志

7.1 (2022-06-30)

  • 修复弃用警告。

  • 依赖webdriver-manager来自动更新驱动程序。

  • 添加对边缘无头模式的支持并在 GHA 上进行测试。

7.0 (2022-06-28)

  • 删除.screenshot.ZeroDimensionError。之前提出的地方现在保存了整个屏幕截图。

6.1 (2021-05-04)

  • 修复文档中的链接和拼写错误。

  • 修复在Google Chrome上运行的测试。(问题 #20)

  • 谷歌浏览器:添加临时下载目录支持。它可以通过self.layer['selenium_download_dir']作为pathlib.Path访问。

  • 谷歌浏览器:添加对头部模式的支持。

  • 添加对Microsoft Edge的 beta 支持。(它目前支持除了无头模式和下载目录支持之外的所有功能,但仅使用gocept.selenium的测试进行测试。注意: Edge 在 Mac OS 上似乎不太稳定,经过一些测试运行后有时会拒绝启动并需要删除其偏好等)

  • 通过对图层的 getitem 调用添加对选定浏览器和无头模式的访问。

6.0 (2020-12-16)

向后不兼容的更改

  • 放弃对 Python 2、3.5 和 3.6 的支持。

  • 删除requirements.txt

特征

  • 添加对 Python 3.8 和 3.9 的支持。

  • Firefox:为 PDF 文件添加临时下载目录。它可以通过self.layer['selenium_download_dir']作为pathlib.Path访问。

5.2 (2020-10-28)

  • 删除 .webdriver.Layer 的testTearDown上的 localStorage 。

  • 等待元素的时间定义为超时,而不是总是 5 秒。

5.1 (2019-11-14)

  • 单击元素时捕获 ElementClickInterceptedException。

  • 迁移到 Github。

5.0 (2019-05-02)

  • 修复selenium >= 3中的UserWarning,屏幕截图名称应以 .png结尾。

5.0a1 (2019-03-05)

向后不兼容的更改

  • 删除对 Selenium 1 的支持,特别是RCTestCaseRCLayer

  • 删除对 Selenium 2 的支持。

  • 删除对远程 selenium 服务器的支持。gocept.selenium现在使用本地实现,启动自己的浏览器。

特征

  • 添加对 Python 3.6 和 3.7 的支持。

  • Selenium 更新到版本 3。

  • 添加 Firefox 无头支持。

  • 为 gocept.selenium.webdriver.Layer 添加新的默认值。

  • 仅在无头模式下添加对 chromedriver 的实验性支持。

其他变化

  • 删除 bootstrap.py,添加 requirements.txt。

  • 修复更多弃用警告。

  • wd_selenese.py中的selenese_pattern_equals ()现在返回一个布尔值。

4.0 (2018-11-09)

  • 放弃对 Zope 2 的支持。

  • 取决于gocept.httpserverlayer >= 3

  • 取决于plone.testing >= 7.0

  • 修复弃用警告。

3.1.1 (2017-03-07)

  • 修复wd_selense.Selenese.selectFrame('index=0')以将索引作为数字转发到底层 WebDriver,因此它实际上被视为索引。

3.1 (2016-11-11)

3.0 (2016-06-07)

  • 放弃支持:

    • zope.app.testing (extras_require: [ztk])

    • Testing.ZopeTestCase (extras_require: [zope2])

    • plone.app.testing (extras_require: [test_plonetestingz2])

    • Products.PloneTestCase (extras_require: [plonetestcase])

  • 删除空脚本extras_require。

  • 放弃对 Python 2.4、2.5、2.6 的支持。现在只支持 Python 2.7。

  • 当前仅支持小于 2.53 的selenium版本,因为此版本使用自定义 Firefox 时会中断。见https://github.com/SeleniumHQ/selenium/issues/1965

  • 添加.wd_selense.Selenese.selectParentFrame()以选择框架或 iframe 的父级。

2.5.4 (2016-04-12)

  • 修复使用GOCEPT_WEBDRIVER_REMOTE=False作为环境设置的本地 Firefox。

2.5.3 (2016-04-11)

  • 将测试更新到gocept.httpserverlayer >= 1.4

2.5.2 (2016-04-11)

  • 为 Jenkins 集成测试失败的屏幕截图添加文档。(#13936)

  • Webdriver:添加一个带有超时点击的循环,以处理 StaleElementReferenceExceptionNoSuchElementException

2.5.1 (2015-08-27)

  • Webdriver:waitFor在引发NoSuchElementException时重试断言 。(这对于诸如waitForVisible 之类的断言很有用。)

2.5.0 (2015-08-05)

  • 向 webdriver添加clear以删除输入字段的内容。

2.4.1 (2015-06-23)

  • 在为assertScreenshot()旁边的断言截取屏幕截图时编写 junit 注释 。(#13678)

2.4.0 (2015-03-27)

  • 添加了 getCssCountgetXpathCount,因此测试可以在操作之前获得基线。

  • 修复webdriver 的getSelectedValue

2.3.0 (2015-03-09)

  • Webdriver:waitFor现在将在引发StaleElementReferenceException时重试断言 ,而不是产生错误。(这可能发生在诸如waitForAttribute之类的断言上,它会检索 DOM 节点,然后询问它的属性。因此,可以在中间更改节点,从而导致错误。)

2.2.2 (2015-01-09)

  • 改进环境变量处理实现。

2.2.1 (2015-01-07)

  • 修复在 remote=false 模式下处理 firefox 配置文件。

2.2.0 (2015-01-07)

  • 允许在使用 Webdriver 时直接启动浏览器(设置GOCEPT_WEBDRIVER_REMOTE=False和相应的浏览器名称)。

  • 为dragAndDropToObject添加可选的移动参数,在释放按钮之前稍微移动鼠标,因此在需要时可以获得更真实的行为(仅限 Webdriver,RC 似乎没有这个问题)。

  • 添加jsjquery定位器(仅限 Webdriver)。

2.1.9 (2014-11-06)

  • 修复了 Selenese 的chooseOkOnNextConfirmation的大小写。(向后不兼容应该没问题,因为它以前从来没有工作过,无论如何。)

2.1.8 (2014-09-04)

  • 如果在.seleniumrc.LayertestSetUp期间发生异常,则不再停止整个测试运行 (#13375)

2.1.7 (2014-08-12)

  • 再次删除window.gocept_selenium_abort_all_xhr,这个解决方案是不完整的,因为我们只能在open()期间注入它——当浏览器导航到另一个页面时,注入就会丢失。

2.1.6 (2014-08-06)

  • 在open()期间注入 JS 函数window.gocept_selenium_abort_all_xhr,这对于在测试拆卸期间调用很有用,以避免在实际测试已经结束后仍然执行虚假的 XHR 请求。(仅在 Webdriver 中实现,但如果需要可以向后移植到 RC)。

2.1.5 (2014-07-26)

  • Webdriver:仅当所选浏览器为 firefox 时才创建 firefox 配置文件 (#11763)。

2.1.4 (2014-07-09)

  • 恢复版本 2.1.3 中意外损坏的测试的 Python 2.6 兼容性。

  • 调整WebDriver 的isElementPresent以使用 PhantomJS,因为如果找不到元素,它可能会引发一般 WebDriverException。

2.1.3 (2014-07-07)

  • Webdriver:使用waitFor*方法时,在等待条件变为真时不再截屏。

2.1.2 (2014-06-25)

  • 在拆卸时从图层中删除 seleniumrc 变量以实现对称性。

  • 修复WebDriver 的isVisible,因此如果父元素被隐藏,它也会返回 False。

2.1.1 (2014-04-28)

  • 截屏时关闭临时文件。这修复了一些“打开的文件太多”的问题。

2.1.0 (2013-12-20)

  • 通过环境变量 GOCEPT_SELENIUM_TIMEOUT (#10497) 使超时可配置。

  • 也将setTimeout应用于open()超时 (#10750)。

  • 添加环境变量GOCEPT_SELENIUM_JUNIT_ATTACH以支持 Jenkins 的“JUnit 附件插件”。

内部的:

  • 将实例化 Selenese 对象从 testSetUp 移动到层 setUp。这 不应该改变客户端的行为(我们像以前一样注意在 testSetUp 中重置配置的超时),但要小心。

  • 修复 GROK 工具包版本的 URL。

2.0.0 (2013-10-02)

  • 标记 2.0 稳定,是的。

2.0.0b6 (2013-10-02)

  • 使用模式 644(世界可读)保存断言失败的屏幕截图,这对于构建服务器很有用。

2.0.0b5 (2013-10-01)

  • 为 RC 和 Webdriver实现setWindowSize

  • 在 RC-Selenese 中实现getAllWindowIds 。

2.0.0b4 (2013-04-26)

  • 如果测试因空正文而失败,则自动截屏失败并隐藏原始错误消息。现在已修复。(#12341)

2.0.0b3 (2013-04-10)

  • 改进了文档,特别是关于通过集成 webdriver 进行的更改。

  • 如果在使用 webdriver 的测试中发生AssertionError ,则会自动截取屏幕截图并将路径呈现给用户。(#12247)

  • 在具有不同浏览器默认字体的系统上对assertScreenshot进行了测试。

2.0.0b2 (2013-03-01)

  • 稳定 webdriver/selenese API 函数waitForPageToLoad()isTextPresent在元素消失时不会引发错误。

2.0.0b1 (2013-02-14)

  • 将 StaticFilesLayer 提取到 gocept.httpserverlayer。

  • 添加了 assertScreenshot以直观地将渲染元素与主屏幕截图进行比较。

2.0.0a2 (2013-01-09)

  • 添加使用 Webdriver 作为 Selenium 后端的层,而不是旧的 Remote Control。

1.1.2 (2012-12-21)

  • 修复:以正确的顺序初始化 WSGI 层以实际允许记住配置的 WSGI 应用程序。

  • 修复:在提取 gocept.httpserverlayer 后更新了一些导入。

1.1.1 (2012-12-19)

  • 将 StaticFilesLayer 更新为新的 httpserverlayer API。

1.1 (2012-12-19)

  • 将 HTTP 服务器集成提取到单独的包 gocept.httpserverlayer

1.0 (2012-11-03)

  • 将 API 标记为稳定。

0.17 (2012-11-01)

  • 添加gocept.selenium.skipUnlessBrowser装饰器以跳过测试,除非满足某些浏览器要求。

  • 修复:静态测试服务器在某些情况下没有关闭。

0.16 (2012-10-10)

  • 修复了 selenese 弹出测试。

  • 默认为服务器进程打开一个随机端口:当环境变量GOCEPT_SELENIUM_APP_PORT没有设置时,绑定一个随机的空闲端口。例如,这允许并行测试 (#11323)。

0.15 (2012-09-14)

0.14 (2012-06-06)

  • API 扩展:添加了 assertCssCount。因此需要硒> = 2.0。

  • 添加了 Trove 分类器来打包元数据。

  • 将代码移至 Mercurial。

0.13.2 (2012-03-15)

  • 修复 WSGI 风格:如果 WSGI 服务器正确关闭,则在拆卸时会出现RuntimeError 。

0.13.1 (2012-03-15)

  • 更新了错误跟踪器的 URL。

  • 额外脚本不再需要Python >= 2.5 上的elementtree 。

0.13 (2012-01-30)

  • 添加了一个 selenese 断言类型“列表”并将其添加到窗口管理查询方法中。

  • API 扩展:添加了openWindow

  • API 更改:过滤getAllWindowNames的结果以忽略“null”。

  • 向后兼容的 API 更改:selectWindow现在在传递窗口 id 时也选择主窗口没有或根本没有参数。

  • pinned compatible ZTK version to 1.0.1, grok version to 1.2.1, 一般把所有使用过的软件包都固定到一致版本,供本包自己测试

0.12 (2011-11-29)

  • API 扩展:添加了getAllWindow*selectWindow

0.11 (2011-09-15)

  • 添加了一些说明如何测试 Zope 2 WSGI 应用程序。

  • 描述了如果使用plone.testing 设置测试层,如何测试 Zope 2/Plone 应用程序。

0.10.1 (2011-02-02)

  • 自述文件的改进。

  • 为使用 ZTK 但使用 zope.app.wsgi.testlayer 而不是 zope.app.testing 的包编写了 快速入门部分

  • 允许使用正则表达式作为正则表达式的模式前缀,以使正则表达式与文档字符串和 Selenium 文档兼容。

0.10 (2011-01-18)

  • 从 Selenium HTML 表生成 python 测试的脚本。从 KSS 项目重用,由原作者 Jeroen Vloothuis 提供。

  • 在 README 中使用Selenium RC的 URL,其中可以下载 1.0.3 版本(而不是 1.0.1),这也适用于 Mac OS X 上的 Firefox。

0.9 (2010-12-28)

  • 提供与 Grok (#8260) 使用的最新测试层方法 (zope.app.appsetup/zope.app.wsgi) 的集成。

  • 提供与 plone.testing 的集成

  • 使浏览器和 RC 服务器可配置 (#6484)。

  • 在命令日志中显示当前测试用例 (#7876)。

  • 连接到 RC 服务器失败时引发可读错误 (#6489)。

  • 测试运行程序终止时退出浏览器 (#6485)。

0.8 (2010-10-22)

  • 修复了 StaticFilesLayer 的测试以通过 Python 2.4 到 2.7。

  • API 扩展:getSelectOptions

0.7 (2010-08-16)

  • API 扩展:getElementHeight|WidthgetCookie*和其他一些。

  • 很多动作方法(鼠标*等)

0.6 (2010-08-09)

  • assertXpathCount 现在也采用整数 (#7681)。

  • API 扩展:添加isChecked验证复选框、runScriptclickAtgetLocationgetSelectedValuegetSelectedIndex

  • pause方法现在使用浮点除法。在传递 int 之前隐式四舍五入到整秒的地方暂停。

  • 分解测试层的名称现在包含基础模块。zope.testrunner 使用该名称区分层。在此修复之前,从具有相同名称但在不同模块中的基础层中分解出的硒层将被 zope.testrunner 视为相等。

  • 分解的 ZTK 层现在在 tearDown 中干净地关闭了 http 服务器。这允许一次运行不同的硒层。

0.5 (2010-08-03)

  • 添加一个静态文件测试层,用于针对一组静态 (HTML) 文件运行 selenium 测试。

  • 模式现在也适用于多行字符串,即 'foo*' 将匹配 'foonbar' (#7790)。

0.4.2 (2010-05-20)

  • API 扩展:*keyDown*keyUpkeyPress

0.4.1 (2010-04-01)

  • API 扩展:添加了getSelectedLabel

  • 调用open时忽略服务器响应的代码。SeleniumRC 的默认行为在 1.0.1 和 1.0.2 之间发生了变化,但我们希望默认的旧行为。

0.4 (2010-03-30)

  • API 扩展:添加getLocation以在浏览器中检索当前加载的 URL。

  • API 扩展:增加了waitForPopUpselectPopUpdeselectPopUpclose

  • API 扩展:增加了verifyAlertPresentverifyAlertNotPresentwaitForAlertPresent

  • 可用性:在调用未实现的 selenese 方法时引发更好的可读性异常。

  • 可用性:引发失败异常,尽管有一些 lambdas 包裹在它周围,但它传达了失败断言的名称。

0.3 (2010-01-12)

  • 提取 'host' 和 'port' 作为 gocept.selenium.ztk.Layer 的类属性,以便子类可以覆盖它们;停止将 8087 硬编码为服务器端口。

0.2.1 (2009-12-18)

  • 修复 PyPI 上不完整的 sdist 版本。

0.2 (2009-12-18)

  • 使 Zope 2 测试服务器可从外部访问。

  • 实施 getTitle/assertTitle/waitForTitle/等。

0.1 (2009-11-08)

  • 首次发布