python设置端口控制ie浏览器_[python]使用 PAMIE 控制 IE 浏览器 | Mozillazg's Blog

本文介绍了如何在Python环境下使用PAMIE库来操控IE浏览器,包括安装配置、常见问题解决以及javaScriptExecute函数的修正。在Windows 7 32位系统、Python 2.6.7和IE 8上,需解决注册表问题和先启动IE再运行代码才能避免错误。
摘要由CSDN通过智能技术生成

PAMIE是一套为Python写的用于Web自动化测试的工具,采用Win32COM的方式操作IE来实现。

可以用 PAMIE 来进行自动提交表单、自动点击之类的工作。

安装及配置

从 http://sourceforge.net/projects/pamie/files/ 下载适合自己 Python 版本的 PAMIE 压缩包。本文下载的是 pamie20.zip 适用于 Python 2.x 。

将压缩包内的 cPAMIE.py 拷贝到 python/lib 目录下。网上有说 注意 sys.path.append后面的路径是否正确,如果不正确需要修改一下,修改为python模块的路径即可,比如 sys.path.append(r’d:\python26\lib’) ,经验证可以不用修改 cPAMIE.py 的内容。

在压缩包内的 readme.html 中可以找到一个 api 文档(PAMIE Reference Guide)。

使用

至于使用方法,可以查看 api 文档或上网搜索。

下面主要讲述一下我在使用中遇到的几个问题。

系统环境

Windows 7 Ultimate 32-bit

Python 2.6.7 + cPAMIE Build 2.0

Internet Explorer 8

遇到的问题

遇到的第一个问题是:

>>> from cPAMIE import PAMIE

>>>

>>> ie = PAMIE()

Traceback (most recent call last):

File "", line 1, in

File "e:\Program Files\Python\lib\cPAMIE.py", line 64, in __init__

self._ie = DispatchEx('InternetExplorer.Application')

File "e:\Program Files\Python\lib\site-packages\win32com\client\__init__.py", line 113, in DispatchEx

dispatch = pythoncom.CoCreateInstanceEx(clsid, None, clsctx, serverInfo, (pythoncom.IID_IDispatc

h,))[0]

pywintypes.com_error: (-2147221005, 'Invalid class string', None, None)

上网查了 n 久以后才知道可能跟注册表中的 HKEY_CLASSES_ROOT\InternetExplorer.Application 的值有关。

所以我就对注册表中相关项做了如下修改:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\InternetExplorer.Application]

@="Internet Explorer"

[HKEY_CLASSES_ROOT\InternetExplorer.Application\CLSID]

@="{0002DF01-0000-0000-C000-000000000046}"

[HKEY_CLASSES_ROOT\InternetExplorer.Application\CurVer]

@="InternetExplorer.Application.1"

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\InternetExplorer.Application.1]

@="Internet Explorer (Ver 1.0)"

[HKEY_CLASSES_ROOT\InternetExplorer.Application.1\CLSID]

@="{0002DF01-0000-0000-C000-000000000046}"

这样做了以后又出现了另外一个问题:

>>> ie = PAMIE()

Traceback (most recent call last):

File "", line 1, in

File "E:\Program Files\Python\lib\cPAMIE.py", line 64, in __init__

self._ie = DispatchEx('InternetExplorer.Application')

File "E:\Program Files\Python\lib\site-packages\win32com\client\__init__.py", line 113, in DispatchEx

dispatch = pythoncom.CoCreateInstanceEx(clsid, None, clsctx, serverInfo, (pythoncom.IID_IDispatch,))[0]

pywintypes.com_error: (-2147221164, 'Class not registered', None, None)

经实验,只要在先打开 IE 浏览器后再执行上面的代码就不会出错了。

关于 javaScriptExecute() 函数

还有就是我发现它的 api 文档中关于 javaScriptExecute() 函数的描述有误:

javaScriptExecute() Function

Executes a java script function

Parameters:

javaScriptExecute (name)

name: The name of the javascript function

Returns:

True on success, else False

实际情况是 javaScriptExecute() 函数根本就没有返回值。需要修改源代码中的 javaScriptExecute() 函数,为其添加返回值:

def javaScriptExecute(self, name):

""" Executes a java script function

parameters:

name - The name of the javascript function

returns:

True on success, else False

"""

self._wait()

try:

doc = self._ie.Document

pw = doc.parentWindow

script = name

pw.execScript(script)

return True

except:

(ErrorType,ErrorValue,ErrorTB)=sys.exc_info()

print sys.exc_info()

traceback.print_exc(ErrorTB)

return False

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值