以编程方式修改Wiki页面(Confluence)

时间:2012-07-23 11:43:53

标签: python html urllib2

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

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

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

    感谢您的帮助!!

    编辑:XML-RPC确实是解决方案,this example完全符合我的要求!

2 个答案:

答案 0 :(得分: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代码。例如,它删除了元素上的脚本,样式和有时标题属性。为了把这些东西带回来,你需要使用他们的宏代码。

最简单的方法是在汇合处编辑页面并使其看起来像你想要的那样,然后抓住页面并打印页面['内容'],看看atlassian人决定做什么神奇的新东西标准html。

答案 1 :(得分:5)

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

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

除非您尝试进行包括测试GUI在内的某种端到端测试(例如自动跨浏览器),否则没有理由真正搞乱buttontextarea s测试)。