1

介绍

我是一个项目团队的一员,该团队使用旧的 GForge 系统(社区版 v5.6.1)来托管我们的源代码并提供一些进一步的服务。一项内置服务是上传和下载功能。因此用户可以很容易地获得生成的应用程序版本。为了提供这个可下载的版本,我们作为开发人员必须使用浏览器(例如 IE 或 FF)导航到相应的 GForge 页面,然后勾选一些按钮,填写一些文本框,最后点击“上传”按钮,打开一个文件对话框以指定要上传到 GForge 下载区域的任何文件。对于下载,过程类似。此外,有时会出现一个单独的 WEB 页面来请求会话登录。

现在,作为开发人员,我们正处于“火爆阶段”,需要提供高频率的可下载版本,上述过程对于发布的重要部分来说太容易出错,而且速度太慢。除此之外,屏幕前总是需要一个真实的人来点击。

问题

我们如何能够以编程方式将生成的软件版本上传和下载到 GForge 的下载区域,同时克服第一手的密码页面(当然使用有效的用户帐户)?

到目前为止我们所做的尝试

使用 Python 脚本。Python 提供了非常有用的模块,如“urllib”、“urllib2”和“requests”,任何 HTTP 访问(即使是具有会话密码保护的访问)都应该是可管理的。经过几个小时的尝试,GForge 系统只返回密码请求页面。没有任何有趣的文件。甚至远离上传任何东西。

使用 AutoIt 脚本。AutoIt 可以自动化鼠标移动和键盘按下以及直接访问屏幕上的可见元素。它提供了一个“窗口信息”应用程序来识别任何窗口元素。但是,例如 WEB 页面 (HTML)中的按钮和文本字段无法识别。所以我们不知道如何正确识别 GForge 的密码文本字段以便将鼠标移动到那里,并输入必要的文本。从那里继续模仿坐在屏幕前的人。

有人对解决我们的问题有一些经验吗?

4

1 回答 1

0

我会将您的系统升级到 v6.4.2(当前 GForge 版本)。从那里您将可以访问 SOAP 接口,这将使这一切成为可能。当 GForgeNEXT 发布时,https: //next.gforge.com ,SOAP 接口将被一个 REST-ful API 取代,从而使这种集成更加容易。

从 5.6.x 升级到 v6.4.2 会有点痛苦,但我们的团队很乐意提供帮助,只需在 gforge.com 上创建一个帐户,然后在此处打开免费支持票:

https://gforge.com/gf/project/gforge5/tracker/?action=TrackerItemBrowse&tracker_id=10345

免责声明:我的公司管理 GForge,因此我会向任何付费客户提供上述建议。为了更清楚起见,GForge 中的文件存储在文件系统中。SOAP 界面允许您访问数据库以获取任何票证或文档,获取适当的文档,甚至替换它。以编程方式,这是最干净的答案。

于 2016-10-13T17:12:28.913 回答