2

我想以编程方式(在 python 中)修改 wiki 页面(Atlassian 的 Confluence - JIRA 编辑器)。到目前为止,我尝试的是模拟用户行为:

  1. 点击编辑按钮
  2. 改变textarea输入的内容
  3. 使用保存按钮提交更改

第 1 部分可以,因为我有与页面编辑相对应的 URL,第 2 部分(页面检索和修改)也可以,但我不知道如何实现第 3 步...我正在使用urllib2.

谢谢你的帮助 !!

编辑:XML-RPC 确实是解决方案,这个例子正是我想要的!

4

2 回答 2

9
# write to a confluence page
import xmlrpclib

CONFLUENCE_URL = "https://intranet.example.com/confluence/rpc/xmlrpc" 
CONFLUENCE_LOGIN = "a confluence username here"
CONFLUENCE_PASSWORD = "confluence pwd for username"

# get this from the page url while editing
# e.g. ../editpage.action?pageId=132350005 <-- here
PAGE_ID = "132350005" 
client = xmlrpclib.Server(CONFLUENCE_URL, verbose = 0)
auth_token = client.confluence2.login(CONFLUENCE_LOGIN, CONFLUENCE_PASSWORD)
page = client.confluence2.getPage(auth_token, PAGE_ID)

# and write the new contents
page['content'] = "!!!your content here!!!"

result = client.confluence2.storePage(auth_token, page)
client.confluence2.logout(auth_token)

请注意,当您执行此操作时,confluence 会修改您的 html 代码。例如,它会去除元素上的脚本、样式和有时的标题属性。为了把这些东西拿回来,你需要使用他们的宏代码。

最简单的方法是在融合中编辑页面并使其看起来像您想要的那样,然后抓取页面并打印页面 ['content'] 以查看 atlassian 人决定对标准 html 做哪些神奇的新东西.

于 2013-09-13T01:30:10.303 回答
5

这似乎是绝对错误的做法。

首先,Confluence 有一个插件架构,它应该允许您从应用程序本身以编程方式管理内容,而无需任何类型的 HTTP 请求。其次,即使您出于某种原因不想或不能使用插件 API,下一个明显的选择是使用SOAP/XML-RPC API

除非您尝试进行某种端到端测试,包括测试 GUI(例如自动跨浏览器测试),否则没有理由真正混淆buttons 和s。textarea

于 2012-07-23T11:51:14.187 回答