我想编写一个以下脚本:给定一个文本文件,其中包含要在某个站点上执行的操作列表,它将使用某些浏览器(可能是IE,因为我对其他可驱动的浏览器一无所知) CSS渲染和JS执行功能,以模仿用户在站点上执行这些操作。
所以我找到了this page和它的“网络测试”部分,它列出了:
后两个在localhost上运行某种服务器(这似乎不是很合适的决定) Pamie有一些有史以来最糟糕的文件,其网站上的许多“建设中”页面最后一次更新于2006年 并且PyXPCOM似乎不是专门为FF创建的。我可能是一个糟糕的Google员工,但我仍然没有找到一个像使用FF一样使用PyXPCOM的好例子。
哪种方式可以指导浏览器,您更喜欢我的目的以及为什么? TIA
更新:
我需要能够在页面上呈现JavaScript。我想使用一些基于服务器的库不是一个好的解决方案,因为它一次只限于一个浏览器实例,所以我不能,例如,将2个浏览器实例设置为2个不同的代理而不必制作2台服务器(这是正确的吗?)。
答案 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绑定。