2

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

所以我找到了这个页面和它的“网络测试”部分,它列出了:

  • 帕米
  • PYXPCOM
  • 风车

后两者在本地主机上运行某种服务器(这似乎不是一个合适的决定)。
Pamie 有一些有史以来最糟糕的文档,他们网站上的许多“建设中”页面最后一次更新是在 2006 年。
而且 PyXPCOM 似乎不是专门为 FF 创建的。我可能是一个糟糕的谷歌人,但我仍然没有找到一个像使用 FF 这样的使用 PyXPCOM 的好例子。

出于我的目的,您更喜欢哪种方式来引导浏览器,为什么?TIA

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

4

5 回答 5

3

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

Mechanize为您提供有状态的程序化网页浏览,并且可能是您正在寻找的。

于 2009-11-20T22:29:56.347 回答
2

您应该尝试Win32Com,因为它使您可以使用他们的 COM 服务器驱动程序,如果他们没有,您可以让它执行简单的操作,例如模拟按键或将窗口从前台移动到后台并返回.
以 IE 为例,由于它有一个 COM 服务器,因此您可以使用 IE Python 对象的函数使其在表单、复选框、下载文件以及几乎所有您能想象到的内容中编写内容。

于 2009-11-20T17:34:46.837 回答
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_())
于 2009-11-20T20:09:47.657 回答
1

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

于 2009-11-20T18:43:09.003 回答
1

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

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

于 2009-11-20T22:07:15.997 回答