什么是最好的Python浏览器自动化工具?

时间:2009-11-20 17:06:42

标签: python browser-automation

我想编写一个以下脚本:给定一个文本文件,其中包含要在某个站点上执行的操作列表,它将使用某些浏览器(可能是IE,因为我对其他可驱动的浏览器一无所知) CSS渲染和JS执行功能,以模仿用户在站点上执行这些操作。

所以我找到了this page和它的“网络测试”部分,它列出了:

  • PAMIE
  • PYXPCOM
  • 风车

后两个在localhost上运行某种服务器(这似乎不是很合适的决定) Pamie有一些有史以来最糟糕的文件,其网站上的许多“建设中”页面最后一次更新于2006年 并且PyXPCOM似乎不是专门为FF创建的。我可能是一个糟糕的Google员工,但我仍然没有找到一个像使用FF一样使用PyXPCOM的好例子。

哪种方式可以指导浏览器,您更喜欢我的目的以及为什么? TIA

更新
我需要能够在页面上呈现JavaScript。我想使用一些基于服务器的库不是一个好的解决方案,因为它一次只限于一个浏览器实例,所以我不能,例如,将2个浏览器实例设置为2个不同的代理而不必制作2台服务器(这是正确的吗?)。

5 个答案:

答案 0 :(得分:3)

我鼓励你再看看Selenium ......这才是你想要做的。您是否需要在浏览器中实际呈现页面,或者只是模拟导航和单击?

Mechanize为您提供有状态的程序化网页浏览,可能就是您所需要的。

答案 1 :(得分:2)

你应该尝试Win32Com,因为它可以让你使用他们的COM服务器来驱动程序,如果他们没有,你可以让它执行简单的操作,比如模拟按键或移动窗口从前景到​​背景和背部。
在IE的情况下,因为它有一个COM服务器,你可以使用IE Python对象的功能,使它在表单,复选框,下载文件和几乎你能想象的一切中写东西。

答案 2 :(得分:2)

我不确定Qt的Webkit通过PyQt是否可以解决您的问题,但我通常可以用这种方式控制一个简单的Python浏览器,例如:

import sys
import time

from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *

app = QApplication(sys.argv)

web = QWebView()

settings = web.settings()
settings.setAttribute(QWebSettings.PluginsEnabled, True)
settings.setAttribute(QWebSettings.JavaEnabled, True)
settings.setAttribute(QWebSettings.JavascriptCanOpenWindows, True)
settings.setAttribute(QWebSettings.JavascriptCanAccessClipboard, True)
settings.setAttribute(QWebSettings.DeveloperExtrasEnabled, True)
settings.setAttribute(QWebSettings.ZoomTextOnly, True)


settings.setOfflineStoragePath('.')
settings.setIconDatabasePath (".")

url = 'http://stackoverflow.com'

web.load(QUrl(url))
web.show()

sys.exit(app.exec_())

答案 3 :(得分:1)

查看MozMill,它适用于Firefox。使用JavaScript,应该比COM更容易。

答案 4 :(得分:1)

您可以使用pywin32使用autoit COM对象。

另一种选择是使用selenium 2(aka webdriver)python绑定。