用于 Selenium 的测试友好的 Python API,并与 Web 应用程序框架集成。
项目描述
gocept.selenium 为Selenium提供了一个 API ,适用于编写测试并将其与任何 WSGI、Plone 或 Grok 应用程序的测试套件集成。
虽然测试 API 可以独立使用,但集成是使用测试层完成的,这是zope.testrunner的一个特性。
使用gocept.pytestlayer将其与pytest集成。
开发 gocept.selenium
- 作者:
- 在线文档:
- PyPI 页面:
- 问题跟踪器:
- 源代码:
- 当前更改日志:
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 的支持,特别是RCTestCase和RCLayer。
删除对 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)
支持硒版本> = 2.53。 https://bitbucket.org/gocept/gocept.selenium/issues/12
要求 selenium 版本 < 3.0,因为此版本删除了对 Selenium RC 的支持。
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:添加一个带有超时点击的循环,以处理 StaleElementReferenceException和NoSuchElementException。
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)
添加了 getCssCount和getXpathCount,因此测试可以在操作之前获得基线。
修复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 似乎没有这个问题)。
添加js和jquery定位器(仅限 Webdriver)。
2.1.9 (2014-11-06)
修复了 Selenese 的chooseOkOnNextConfirmation的大小写。(向后不兼容应该没问题,因为它以前从来没有工作过,无论如何。)
2.1.8 (2014-09-04)
如果在.seleniumrc.Layer的testSetUp期间发生异常,则不再停止整个测试运行 (#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)
WSGI-Layer 与 Python 2.5 兼容。
converthtmltests 中的编码支持(Tom Gross < tom @ toms-projekte . de > 的补丁)。
XHTML 对 selenium 表的支持(Tom Gross < tom @ toms-projekte . de > 的补丁)。
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|Width、getCookie*和其他一些。
很多动作方法(鼠标*等)
0.6 (2010-08-09)
assertXpathCount 现在也采用整数 (#7681)。
API 扩展:添加isChecked验证复选框、runScript、 clickAt、getLocation、getSelectedValue、getSelectedIndex。
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、*keyUp、keyPress。
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 扩展:增加了waitForPopUp、selectPopUp、deselectPopUp 和close。
API 扩展:增加了verifyAlertPresent、verifyAlertNotPresent和 waitForAlertPresent。
可用性:在调用未实现的 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)
首次发布